我今天遇到了问题。我有一个以Windows管理员身份启动的程序。问题是我想要检索当前用户的当前UserName,并且getUserNameEx(NameDisplay)给我管理员NameDisplay ...
我也试图通过浏览Windows登录会话来检索这些信息,但我每次都有大约16个会话,并且很难知道好的会话。
非常感谢你, JM。
答案 0 :(得分:1)
以管理员身份启动的程序仍将在用户的登录会话中运行,因此您可以枚举登录会话,直到找到匹配的会话,然后从中获取用户名。
答案 1 :(得分:0)
我看到过您可以使用WMI执行此操作的建议 - 您枚举Win32_Process个实例,然后调用GetOwner方法查找谁是'explorer.exe'的所有者。
不确定这在终端服务配置中的效果如何。您还必须确保explorer.exe确实是系统进程,而不是恰好具有相同EXE名称的其他本地程序。
答案 2 :(得分:0)
您仍然可以告诉“拥有”用户是谁 - 我在这里做了一点测试:使用我的非管理员帐户登录到Win2k8终端服务器并启动命令提示符(cmd.exe)作为我的管理员用户。
使用Process Explorer获取每个进程的详细信息,我可以看到与cmd.exe进程关联的用户是我的管理员帐户,父进程是explorer.exe(PID 5008),当我查找用户关联时使用PID 5008,这是我的非管理员帐户。
如果您可以在代码中复制此内容,则应该能够找到以管理员帐户身份运行任何特定进程的人员。