ACESSO REMOTO
                    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?
            EU SEI QUE PODE CAPTURAR O NOME DO USUARIO, MAS QUERO CAPTURAR O NUMERO DA SEÇÃO(ID), ALGUEM PODE ME AJUDAR?
                    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:
A função (que também pode estar no módulo):
            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