[C/C++] aktuellen Username herausfinden

posi90

Erfahrenes Mitglied
Hallo,

Mein Programm ist eine Dienstanwendung und wird als SYSTEM Dienst ausgeführt. Ich möchte gerne herausfinden, welcher User und ob im Moment jemand eingeloggt ist. Habe schon 3 Funktionen ausprobiert, bekomme immer "SYSTEM" zurück und nicht den aktuellen Usernamen. Kennt jemand eine Funktion, die mir den richtigen Wert liefert?

Folgende Funktionen habe ich bereits ausprobiert:
GetUserName, Environment.UserName, bei der letzten habe ich noch Fehler, die liefert noch gar nix (NetWkstaUserGetInfo).

Dieses Programm ist Teil meiner Diplomarbeit, es soll den Computer ausschalten, wenn sich zb. 10min niemand eingeloggt hat. Dh. es muss schon ausgeführt werden, wenn sich noch kein User angemeldet hat. Gibt dann noch eine Erweiterung wo ich auch den Usernamen brauche.

Verwende MVC++ 2010, soll für Platformen >Win XP funktionieren.

Grüße Poseidon
 
Zuletzt bearbeitet:
Das wird in diesem Falle SYSTEM zurückgeben, da der Dienst als SYSTEM läuft. Der Threadersteller möchte jedoch herausfinden welche anderen Benutzer noch auf dem System angemeldet sind.
 
k.a. ob die umgebungsvariablen on die dienstumgebung übernommen werden.

Wenn ja:
Code:
getenv("USERNAME")

ansonsten:

Code:
The NetWkstaUserEnum function lists information about all users currently logged on to the workstation. This list includes interactive, service and batch logons.

NET_API_STATUS NetWkstaUserEnum(
  __in     LPWSTR servername,
  __in     DWORD level,
  __out    LPBYTE *bufptr,
  __in     DWORD prefmaxlen,
  __out    LPDWORD entriesread,
  __out    LPDWORD totalentries,
  __inout  LPDWORD resumehandle
);
 
Zuletzt bearbeitet:
Danke! Sieht einfach aus =)

Mit dem WMI-Klasse kenn ich mich net so gut aus. Bisweilen hat es auch gut mit meiner Variante funktioniert, nur halt etwas umständlich.

Grüße Poseidon
 
Zurück