Récupérer le nom du pc connecté à un serveur en terminal server (rdp)

Contenu du snippet

Lorsqu'on est connecté en Terminal Server et qu'on demande le nom du PC on obtient généralement le nom du server (ce qui est normal). Mais la plupart du temps on a besoins du nom du PC Client pour savoir qui effectue certaines opération (sachant qu'on peut avoir un user identique à partir de PC différents).
Donc avec ce code on retrouve le nom du PC Client

Source / Exemple :


Enum WTS_INFO_CLASS
        WTSInitialProgram = 0
        WTSApplicationName = 1
        WTSWorkingDirectory = 2
        WTSOEMIdWTSOEMIdNot = 3
        WTSSessionId = 4
        WTSUserName = 5
        WTSWinStationName = 6
        WTSDomainName = 7
        WTSConnectState = 8
        WTSClientBuildNumber = 9
        WTSClientName = 10
        WTSClientDirectory = 11
        WTSClientProductId = 12
        WTSClientHardwareId = 13
        WTSClientAddress = 14
        WTSClientDisplay = 15
        WTSClientProtocolType = 16
        WTSIdleTime = 17
        WTSLogonTime = 18
        WTSIncomingBytes = 19
        WTSOutgoingBytes = 20
        WTSIncomingFrames = 21
        WTSOutgoingFrames = 22
    End Enum

    Private Const WTS_CURRENT_SERVER_HANDLE As Integer = -1

    Private Declare Sub WTSFreeMemory Lib "wtsapi.dll" (ByVal memory As IntPtr)
    Private Declare Auto Function WTSGetActiveConsoleSessionId Lib "Kernek32.dll" () As Integer
    Private Declare Auto Function WTSQuerySessionInformation Lib "wtsapi32.dll" ( _
            ByVal hServer As Int32, _
            ByVal SessionId As Int32, _
            ByVal InfoClass As WTS_INFO_CLASS, _
            ByRef ppBuffer As IntPtr, _
            ByRef pCount As Int32) As Int32

    Private Function fnGetClientName() As String
        Dim R As String = ""
        Dim Buffer As IntPtr = IntPtr.Zero
        Try
            Dim bytesReturned As Integer
            Dim sessionInfo As Boolean = WTSQuerySessionInformation(IntPtr.Zero.ToInt32, -1, _
                WTS_INFO_CLASS.WTSClientName, Buffer, bytesReturned)
            R = System.Runtime.InteropServices.Marshal.PtrToStringAuto(Buffer)
        Catch ex As Exception

        Finally
            Try
                WTSFreeMemory(Buffer)
                Buffer = IntPtr.Zero
            Catch ex As Exception

            End Try
        End Try
        Return R
    End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.