gpt4 book ai didi

.net - 程序 (.NET) 如何判断它是否以其他用户身份运行?

转载 作者:行者123 更新时间:2023-12-04 02:26:51 26 4
gpt4 key购买 nike

有没有办法从我的 .NET 程序中检测它是作为桌面用户正常运行还是使用“作为不同用户运行”菜单选项/runas 命令作为不同用户运行?

最佳答案

获取运行程序的用户更容易,您可以使用 Environment.UserNameSystem.Security.Principal.WindowsIdentity.GetCurrent().Name .
它们之间的区别的链接位于下面...

现在,获取 登录用户 有点棘手。
我使用以下方法(我想我不久前在这里找到了它)。它所做的是检查谁是 explorer.exe 的所有者。进程(即登录用户):

private 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;
}

上述方法需要 System.Managment dll

更新:
根据 OP 的评论,上述方法工作正常 - 添加了另一个选项:

Win32_ComputerSystem 获取第一个用户名:
 ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];

关于.net - 程序 (.NET) 如何判断它是否以其他用户身份运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15089535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com