Windows Username ermitteln

znert01

Grünschnabel
Hallo zusammen,
frage klingt zunächst einfach - mit System.getenv(USERNAME) oder System.getProperty("user.name") erhalte ich den Username.

Nur: Mein Programm wird als Windows-Dienstprogramm mit dem Start des Betriebssystems gestartet. Der aktive Username soll in eine DB eingetragen werden und wird dann - vereinfacht gesagt - über Web angezeigt.
Mit 'getProperty' erhalte ich jedoch immer SYSTEM als User.
Der 'USERNAME' funktioniert nur, wenn ich das Programm unter einem bestimmten User starte.

Gibt es eine Möglichkeit, den aktuell angemeldeten Windows-User zu ermitteln?http://www.tutorials.de/forum/images/smilies/confused.gif
:confused:
Und wenn kein user Angemeldet ist, soll eben auch "No aktiv User" in der DB eingetragen sein.
 
Hallo,

auf einem Windows (Server) System können auch mehrere Benutzer gleichzeitig angemeldet sein...

Das könnte man beispielsweise über ein kleines vb-Srkipt machen, dass man dann auf dem entsprechenden Server absetzt und die Ausgabe einliest...

Siehe: http://www.google.de/search?q=wsh+logged+on+users&hl=de&start=10&sa=N
Eine andere Möglichkeit wäre beispielsweise alle explorer.exe Prozesse aufzulisten und dort deren Username auszugeben:
Code:
C:\Dokumente und Einstellungen\Thomas.Darimont>tasklist /v /FI "IMAGENAME eq explorer.exe"

Abbildname                  PID Sitzungsname      Sitz.-Nr. Speichernutzung Status          Benutzername
========================= ===== ================ ========== =============== =============== ========================
explorer.exe               2256 Console                   0        24.248 K Wird ausgeführt XXXXX\Thomas.Darimont

Eine weite Möglichkeit wäre es die Ausgabe von Qwinsta.exe auszulesen:
Code:
C:\Dokumente und Einstellungen\Thomas.Darimont>Qwinsta.exe
 SITZUNGSNAME      BENUTZERNAME      KENNUNG STATUS  TYP         GERÄT
>console           Thomas.Darimont           0  Aktiv   wdcon
 rdp-tcp                                 65536  Bereit  rdpwd

Gruß Tom
 
Zurück