Array
(
)

MSTSC para ASP.NET

Victor Perez
   - 07 out 2011

Tenho uma página para uso do suporte que contém as empresas, ips, usuário e senha para as conexões remotas via Terminal Services Client, gostaria de dar uma incrementada nesta página e criar um botão para efetuar a conexão e abrir a Área de Trabalho Remota. Assim não precisaria deixar os IPs, Usuário e Senha, teria apenas o Nome da Empresa e o botão Conectar.
Estou usando o Visual Studio 2010 e gostaria de saber se há alguma tutorial que me permitisse abrir o Remote Desktop Connection já conectado e exibindo o desktop do cliente em ASP.NET.
[]s,
Victor

Rodrigo Bonfim
   - 01 nov 2011


Citação:
Tenho uma página para uso do suporte que contém as empresas, ips, usuário e senha para as conexões remotas via Terminal Services Client, gostaria de dar uma incrementada nesta página e criar um botão para efetuar a conexão e abrir a Área de Trabalho Remota. Assim não precisaria deixar os IPs, Usuário e Senha, teria apenas o Nome da Empresa e o botão Conectar.

Estou usando o Visual Studio 2010 e gostaria de saber se há alguma tutorial que me permitisse abrir o Remote Desktop Connection já conectado e exibindo o desktop do cliente em ASP.NET.

[]s,

Victor


Ola Victor

Em minha empresa fiz algo parecido, o unico problema é que o mstsc não aceita voce enviar o comando com usuario e
senha, somente IP.

Primeiramente eu fiz um arquivo .bat com o codigo abaixo, este .bat eu disponibilizei na propria intranet
como download para que os usuários execute (apenas uma unica vez, na primeira utilização), ele cria uma instancia
rdp e uma putty, com a rdp, podemos digitar rdp://ipdoservidor e irá conectar no servidor desejado através do mstsc,
com o putty podemos digitar putty://ipdoservidor e irá conectar da mesma forma que o rdp (o putty serve pra eu conectar nos
servidores Unix e Linux).

Eis o codigo do arquivo .bat:

@echo off
:menu
echo RDP:// HyperLink - Conexoes
echo ----------------------------------------------------------
echo.
echo.
echo 1. Instalar RDP
echo 2. Desinstalar RDP
echo 3. Sair
echo.
echo Para conexao do PUTTY, copie o executavel para o C:\Windows\system32
echo De seu Computador
echo.
echo.
echo.
set choice=
set /p choice=[1,2,3]?
echo.
if not %choice%== set choice=%choice:~0,1%
if %choice%==1 goto install
if %choice%==2 goto uninstall
if %choice%==3 goto quit
echo.
echo.
echo %choice% opcao nao valida
echo.
pause
cls
goto MENU

:quit
cls
exit

:uninstall
if not exist C:\Windows\hyperlink-rdp.js (
cls
echo RDP:// HyperLink - Conexoes
echo ----------------------------------------------------------
echo.
echo.
echo RDP:// HyperLink nao instalado
echo.
pause
exit)

del C:\Windows\hyperlink-rdp.js /f
del C:\Windows\hyperlink-putty.js /f
reg delete HKCR\rdp /f
reg delete HKCR\putty /f
cls
echo RDP:// HyperLink - Conexoes
echo ----------------------------------------------------------
echo.
echo.
echo RDP:// HyperLink desinstalado com sucesso
echo.
pause
exit

:install
if exist C:\Windows\hyperlink-rdp.js (
cls
echo RDP:// HyperLink - Conexoes
echo ----------------------------------------------------------
echo.
echo.
echo RDP:// HyperLink esta sendo Reinstalado
echo.
del C:\Windows\hyperlink-rdp.js /f
del C:\Windows\hyperlink-putty.js /f
del C:\Windows\system32\putty.exe /f
)

copy \\caminho do putty\putty.exe C:\Windows\System32

echo var server=(WScript.Arguments(0))>>C:\Windows\hyperlink-rdp.js
echo var prefix=rdp://>>C:\Windows\hyperlink-rdp.js
echo var app=C:\\WINDOWS\\system32\\mstsc.exe>>C:\Windows\hyperlink-rdp.js
echo server=server.replace(prefix, )>>C:\Windows\hyperlink-rdp.js
echo server=server.replace(/, )>>C:\Windows\hyperlink-rdp.js
echo var shell = new ActiveXObject(WScript.Shell)>>C:\Windows\hyperlink-rdp.js
echo shell.Exec(app + /v: + server)>>C:\Windows\hyperlink-rdp.js

reg add HKCR\rdp /f /v /t REG_SZ /d URL:Remote Desktop Connection
reg add HKCR\rdp /f /v URL Protocol /t REG_SZ /d
reg add HKCR\rdp\DefaultIcon /f /v /t REG_SZ /d C:\WINDOWS\System32\mstsc.exe
reg add HKCR\rdp\shell\open\command /f /v /t REG_SZ /d wscript.exe C:\WINDOWS\hyperlink-rdp.js %%1

echo var server=(WScript.Arguments(0))>>C:\Windows\hyperlink-putty.js
echo var prefix=putty://>>C:\Windows\hyperlink-putty.js
echo var app=C:\\WINDOWS\\system32\\putty.exe>>C:\Windows\hyperlink-putty.js
echo server=server.replace(prefix, )>>C:\Windows\hyperlink-putty.js
echo server=server.replace(/, )>>C:\Windows\hyperlink-putty.js
echo var shell = new ActiveXObject(WScript.Shell)>>C:\Windows\hyperlink-putty.js
echo shell.Exec(app + + server)>>C:\Windows\hyperlink-putty.js

reg add HKCR\putty /f /v /t REG_SZ /d URL:Putty Connection
reg add HKCR\putty /f /v URL Protocol /t REG_SZ /d
reg add HKCR\putty\DefaultIcon /f /v /t REG_SZ /d C:\WINDOWS\System32\putty.exe
reg add HKCR\putty\shell\open\command /f /v /t REG_SZ /d wscript.exe C:\WINDOWS\hyperlink-putty.js %%1

cls
echo RDP:// HyperLink - Conexoes
echo ----------------------------------------------------------
echo.
echo.
echo RDP:// HyperLink Instalado com Sucesso
echo.
pause
exit

No ASP.Net, coloquei uma pagina com um gridview contendo um botão Select, Nome do servidor, IP,
Forma de conexão (PUTTY OU MSTSC), Usuario e Senha.
No evento SelectedIndexChanged digitei o codigo abaixo:

utiliza o jscript para criar um popup que inicializará a conexão, lembrando
que para este processo ser concluido, é necessário o usuario executar a bat

no grid, a forma de conexão esta na posição 4
If UCase(GvDados.SelectedRow.Cells(4).Text) = PUTTY Then
Dim jscript As String =
jscript += <script language=JavaScript>

conecta com o putty
jscript += window.open(putty:// & GvDados.SelectedRow.Cells(6).Text & @ & GvDados.SelectedRow.Cells(2).Text & ,,resizable=no, menubar=no, scrollbars=no, width=1, height=1);
jscript += </script>
ClientScript.RegisterClientScriptBlock([GetType](), cliente, jscript)

Else

Dim jscript As String =
jscript += <script language=JavaScript>
conecta com o mstsc
jscript += window.open(rdp:// & GvDados.SelectedRow.Cells(2).Text & ,,resizable=no, menubar=no, scrollbars=no, width=1, height=1);
jscript += </script>
ClientScript.RegisterClientScriptBlock([GetType](), cliente, jscript)
End If