查看是否有其他应用程序以管理员身份运行
本文关键字:管理员 身份 运行 应用程序 其他 是否 | 更新日期: 2023-09-27 18:04:53
我正在尝试确定是否有另一个应用程序以管理员身份运行。有100多个问题可以找到你的应用程序是否合适,但不适合其他应用程序。
如果我执行var processes = Process.GetProcesses();
并循环它们,它们似乎没有任何"Elevated"或"IsAdministrator"属性。我还在这里找到了一个函数来获取所有者,但它们都返回为"My-Laptop'Me",所以这对我来说不像我希望的那样工作。
有办法找到这个吗?我用的是Win 8.1,希望能在7上运行,但如果只在8.1+上运行,那完全没问题。
谢谢!
编辑:我的应用程序必须以管理员身份运行
您可以使用这个答案中的技术,只需将Process.GetCurrentProcess().Handle
替换为其他过程的Process.Handle
。
如果你看一下代码(那里有相当多的代码),它获得进程"用户令牌"(进程运行的权限)并检查该令牌是否具有管理员角色,
假设您的进程不是以管理员身份运行的,尝试获取通过UAC提升的进程(例如其MainWindowTitle
)的信息将抛出AccessDenied异常,而非提升的进程将允许您访问该信息。这假定您还验证了进程的所有者,以检查它是否是您。
try
{
var foo = process.MainWindowTitle;
return false; //Process is not elevated
}
catch (Win32Exception ex)
{
return true; //Process is elevated if ex error code is AccessDenied
}