ACESSO REMOTO

DIONISIO 20/01/2012 20:30:56
#393782
BOA NOITE, ALGUEM PODE ME AJUDAR, TEM COMO CAPTURAR O NUMERO DA SEÇÃO DO ACESSO REMOTO?
EU SEI QUE PODE CAPTURAR O NOME DO USUARIO, MAS QUERO CAPTURAR O NUMERO DA SEÇÃO(ID), ALGUEM PODE ME AJUDAR?
HIDDEN 21/01/2012 11:27:25
#393800
Resposta escolhida
O código a seguir pode ser usado para retornar o ID de uma seção do Terminal Service e também detectar se o TS está em execução na máquina.

Em um módulo:

Private Declare Function WTSEnumerateProcesses Lib [Ô]wtsapi32.dll[Ô] Alias [Ô]WTSEnumerateProcessesA[Ô] (ByVal hServer As Long, ByVal Reserved As Long, ByVal Version As Long, ByRef ppProcessInfo As Long, ByRef pCount As Long) As Long
Private Declare Sub WTSFreeMemory Lib [Ô]wtsapi32.dll[Ô] (ByVal pMemory As Long)
Private Declare Sub CopyMemory Lib [Ô]Kernel32[Ô] Alias [Ô]RtlMoveMemory[Ô] (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetCurrentProcessId Lib [Ô]Kernel32[Ô] () As Long

Private Type WTS_PROCESS_INFO
SessionID As Long
ProcessId As Long
pProcessName As Long
pUserSid As Long
End Type


A função (que também pode estar no módulo):

Function TerminalServerSessionId() As String
Dim lRetVal As Long, lCount As Long, lThisProcess As Long, lThisProcessId As Long
Dim lpBuffer As Long, lp As Long, udtProcessInfo As WTS_PROCESS_INFO
Const WTS_CURRENT_SERVER_HANDLE = 0&

On Error GoTo ErrNotTerminalServer
[ô]Definir valor padrão
TerminalServerSessionId = [Ô]0[Ô]
lThisProcessId = GetCurrentProcessId
lRetVal = WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0&, 1, lpBuffer, lCount)
If lRetVal Then
[ô]Successful
lp = lpBuffer
For lThisProcess = 1 To lCount
CopyMemory udtProcessInfo, ByVal lp, LenB(udtProcessInfo)
If lThisProcessId = udtProcessInfo.ProcessId Then
TerminalServerSessionId = CStr(udtProcessInfo.SessionID)
Exit For
End If
lp = lp + LenB(udtProcessInfo)
Next
WTSFreeMemory lpBuffer
End If

Exit Function

ErrNotTerminalServer:
[ô]A máquina não é um Terminal Service
On Error GoTo 0
End Function
Tópico encerrado , respostas não são mais permitidas