Wie bekomme ich den aktuell angemeldeten Benutzernamen in Windows 7 (d. h. der Benutzer, der sich physisch an der Konsole angemeldet hat, in der das Programm läuft, das ich starte).
Wenn ich beispielsweise als "MainUser" angemeldet bin und meine Konsolenanwendung (die den angemeldeten Benutzernamen anzeigt) als "SubUser" ausführen, gibt das Programm nur "SubUser" als den aktuell angemeldeten Benutzer zurück.
Ich habe die folgenden zwei Techniken verwendet, um den Benutzernamen zu erhalten. Beide bringen mir nicht das Ding, das ich will.
%Vor%Beachten Sie jedoch, dass dieser VBScript-Code den angemeldeten Benutzernamen unabhängig vom Benutzerkonto zurückgibt, von dem dieses Skript ausgeführt wird:
%Vor%Wie ist es in C # möglich?
Ich denke, du müsstest eine P / Invoke-Route runter gehen. Sie müssen herausfinden, auf welcher WindowStation Ihr Prozess läuft und dann den Besitzer dieser WindowStation bestimmen. Ich denke nicht, dass es eine .NET API gibt, um diese Dinge zu bestimmen.
Win32-APIs, die Sie betrachten sollten, sind wahrscheinlich GetProcessWindowStation und GetUserObjectSecurity , um den Besitzer zu finden.
Obwohl ich nicht verstehe, ob Sie den Benutzernamen, wer auf dem System angemeldet ist oder den Benutzernamen, unter dem die Konsole ausgeführt wird - vielleicht können Sie versuchen, System.Environment.UserName verwenden - MSDN behauptet, dass es Zeigt den angemeldeten Benutzernamen an.
Sie möchten den Benutzernamen Ihrer Sitzung. Sie können Ihre Sitzungs-ID ermitteln, indem Sie ProcessIdToSessionId aufrufen. Dann verwenden Sie WTSQuerySessionInformation , um den Benutzernamen herauszufinden.