查看是否有其他应用程序以管理员身份运行

本文关键字:管理员 身份 运行 应用程序 其他 是否 | 更新日期: 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
}