如何在 Windows用户中记录当前?我的问题:我正在运行具有管理员权限的进程以及所有这些:
Console.WriteLine(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
Console.WriteLine(Environment.UserName);
Console.WriteLine(System.Security.Principal.WindowsIdentity.GetCurrent().User); //GUID
Console.WriteLine(Environment.GetEnvironmentVariable("USERNAME"));
...尝试让我回到当前运行进程的用户,在我的情况下管理员 - 但我想要登录的当前用户。
有任何想法或建议吗?
答案 0 :(得分:3)
我很久以前就找到了这种方法。我正在使用WMI query
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
答案 1 :(得分:1)
我认为,正确的方法是执行WTSQuerySessionInformation
,其中包括以下内容:
WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,
WTSUserName,buffer, out byteCount);
PInvoke此功能的页面。
切线相关,但可能有意义 - How can I launch an unelevated process from my elevated process and vice versa?