我有一个问题,就是......我用右键单击启动程序 - >以管理员身份运行.这意味着程序正在管理上下文中运行.
WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)
如果我尝试获取用户名,我会得到启动程序的用户作为管理员...例如"管理员",但我需要的是当前登录用户的名称,例如:bob
有人可以帮帮我吗?:)
您可以尝试使用WMI(System.Management.dll)来获取explorer.exe进程的所有者.
string GetExplorerUser()
{
var query = new ObjectQuery(
"SELECT * FROM Win32_Process WHERE Name = 'explorer.exe'");
var explorerProcesses = new ManagementObjectSearcher(query).Get();
foreach (ManagementObject mo in explorerProcesses)
{
string[] ownerInfo = new string[2];
mo.InvokeMethod("GetOwner", (object[])ownerInfo);
return String.Concat(ownerInfo[1], @"\", ownerInfo[0]);
}
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
这依赖于以下事实:资源管理器进程是单个实例,因此您最终无法使用不同的用户凭据运行多个资源管理器进程.