C# 获取当前Windows用户-不是正在运行进程的当前用户

C# 获取当前Windows用户-不是正在运行进程的当前用户,c#,windows,process,active-directory,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); /

如何获取当前登录的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"));
…尝试返回运行进程的当前用户(在我的情况下是管理员),但我希望当前用户登录


有什么想法或建议吗?

我很久以前就发现了这种方法。我正在使用


我认为,正确的方法是执行以下内容:

WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,
                           WTSUserName,buffer, out byteCount);
此功能的第页


与此相关,但可能有兴趣-

可能重复@UweKeim不确定这是一个重复的过程我正在以管理员权限运行一个进程-您是说该进程正在提升运行吗?这是什么操作系统,因为当我为测试应用程序添加app.manifest和include时,它会提升运行,但仍然正确显示我的姓名,而不是管理员或管理员similar@MickyD-那是因为你有管理员权限。如果您是以非管理员身份运行的,则提升还会提示您输入备用用户名和密码。你可以在我在答案底部链接的Raymond Chen文章中看到这种讨论。@Damien_the_unsiver啊,谢谢Damien:我从未对两个用户使用过这种方法。但问题不是针对2个用户?也许,但这不是一个傻瓜式的方法。哦对于我的项目来说,这是可行的,但如果这是对的话:我错了。Sorry如果当前用户不是运行应用程序的管理员,则集合.Cast包含1个空项。所以,这个解决方案在我的情况下不起作用
WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,
                           WTSUserName,buffer, out byteCount);