2016-12-01 3 views
-1

Ich schreibe gerade eine Chat-Anwendung mit TCP in VB.Net und ich muss wissen, wie man den Namen eines Benutzers an einem Computer (das ist nicht die eine, die ich benutze, dh nicht environment.username()), sondern eine im selben LAN-Netzwerk wie ich, die entweder den Computernamen oder die IPV4-Adresse verwendet, die ich programmtechnisch gefunden habe. Ich habe viele Nachforschungen angestellt und habe vielleicht Antworten gefunden, die Windows-Server betreffen und den Benutzernamen des lokalen Benutzers finden. Ich wiederhole jedoch, dass der Benutzer des Computernutzernamens zurückgegeben werden soll, wenn ich seine IP-Adresse/Computername in ein LAN eintippe.Finden Sie Benutzername in einem LAN vb.net/C#

+0

Sie es in dos tun kann ganz einfach 'query user/server: computername' –

Antwort

0

Ich habe keinen Weg gefunden, der keine Kenntnis der Anmeldeinformationen auf dem PC erfordert, nach dem Sie die Benutzer suchen. Wenn Sie einige Admin-Anmeldeinformationen kennen, installieren Sie einfach zwei Nuget-Pakete, Cassia und SimpleImpersonation.

Dann können Sie erhalten die Anwender wie folgt angemeldet:

Using Impersonation.LogonUser(DomainHere, UsernameHere, PasswordHere, LogonType.NewCredentials) 
     Dim TSM As New TerminalServicesManager() 

     Using Server As ITerminalServer = TSM.GetRemoteServer(ComputerNameHere) 
      Server.Open() 

      For Each session In Server.GetSessions() 
       Debug.Print(session.SessionId) 
       Debug.Print(session.UserAccount.Value) 
       Debug.Print(session.ConnectionState) 
      Next 
     End Using 
    End Using