获取当前登录用户(FullToken上下文)

1 c# token windows-identity

我有一个问题,就是......我用右键单击启动程序 - >以管理员身份运行.这意味着程序正在管理上下文中运行.

WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)

如果我尝试获取用户名,我会得到启动程序的用户作为管理员...例如"管理员",但我需要的是当前登录用户的名称,例如:bob

有人可以帮帮我吗?:)

Joã*_*elo 5

您可以尝试使用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)

这依赖于以下事实:资源管理器进程是单个实例,因此您最终无法使用不同的用户凭据运行多个资源管理器进程.