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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 321 fois - Téléchargée 29 fois

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

Ajouter un commentaire

Commentaires

cs_franckydeluka
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
allez Bien vu !! ;-)
C'est toujours utile.

Juste une précision :
à la ligne 44 de ton code tu as écris (modMain.WTS_INFO_CLASS.WTSClientName) et ça plante lorsque je le teste (c'est certainement le module que tu as utilisé toi)
en fait il faut juste le supprimer

9/10
cs_franckydeluka
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
il faut juste supprimer "modmain" pas le reste !
cs_eldim
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
oups...
oui merci j'avais oublié...
c'est pas gênant
apxa
Messages postés
188
Date d'inscription
mercredi 15 mai 2002
Statut
Membre
Dernière intervention
25 avril 2009

Iop,
Dis moi c'est possible dans la variante récupération info du nom de l'application (et trame) utilisant le port serie ?

Have Fun ;)
cs_eldim
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Heu... je suis pas sure que ça est à voir avec cette source...
Tout ce que tu peux récupérer de cette façon se trouve dans l'enum WTS_INFO_CLASS... Rien à voir avec un port série... C'est du Terminal Server

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.