获取当前的Windows用户 - 而不是当前用户运行的进程

时间:2017-02-01 07:25:20

标签: c# windows process active-directory

如何在 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"));

...尝试让我回到当前运行进程的用户,在我的情况下管理员 - 但我想要登录的当前用户

有任何想法或建议吗?

2 个答案:

答案 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?