Aktuell eingeloggte User ermitteln

Hallo!

ich bräuchte eine Möglichkeit die aktuell interaktiv (dh grafisch) eingeloggten Benutzer anzeigen zu lassen.

Weiters bräuchte ich auch einen Weg von den Prozessen, die ich mit system.diagnostics.process.getprocesses bekommen habe, die ausführenden User anzeigen zu lassen.

ich hab gehört dass beides über WMI gehn könnte, aber was is das?

für tipps und/oder lösungsvorschläge wär ich sehr dankbar…

ubrigens: ich programmier in vb.net, aber c# oder c++ wär auch ok…

mfg
Alex

Schau DIr mal den NameSpace system.environment an. Dort findest Du das hübsch ordentlich.

Chris


www.schlechte-doku-hasser.de

Hi Chris!

Danke für den Tipp, aber ich brauche alle eingeloggten User. Unter System.environment.* findet man nur die umgebung des Programms dh der User der das Programm ausführt. Wird das Programm unter dem Benutzer System gestartet dann wird dort als Username System angezeigt (zB bei Systemservices - und ich programmier eins unter dem User System).

Mit WMI kann man alle User herausfinden die aktuell eingeloggt sind und die schon mal seit dem letzten systemboot eingeloggt waren. der Sourcecode schaut dazu folgendermaßen aus:

ms = New ManagementScope(ManagementPath.DefaultPath)
q = New SelectQuery(„Win32_LoggedOnUser“)
query = New ManagementObjectSearcher(ms, q)
querycollection = query.Get()

For Each mo In querycollection
o = New ManagementObject(mo(„Dependent“).ToString())
If ((o(„LogonType“).ToString()) = „2“) Then 'only interactive logins
o = New ManagementObject(mo(„Antecedent“).ToString())
Console.WriteLine(o(„Caption“).ToString() & vbCrLf & o(„Description“).ToString() & vbCrLf & o(„SID“).ToString() & vbCrLf & o(„Name“).ToString)
End If
mo.Dispose()
o.Dispose()
Next

Leider liefert mir der ja auch die User die sich schon ausgeloggt haben. Kann sein dass ma einfach einen zusätzlichen parameter setzen muss, aber mit WMI kenn ich mich leider zu wenig aus.
Ideen?

Mfg
Alex