协慌网

登录 贡献 社区

如何强制我的. NET 应用程序以管理员身份运行?

一旦我的程序安装在客户端计算机上,如何强制我的程序在 Windows 7 上以管理员身份运行?

答案

您将要修改嵌入在程序中的清单。这适用于 Visual Studio 2008 及更高版本:Project + Add New Item,选择 “Application Manifest File”。将<requestedExecutionLevel>元素更改为:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

用户在启动程序时会收到UAC提示。明智地使用; 他们的耐心很快就会消失。

requestedExecutionLevel元素添加到清单只是成功的一半; 你必须记住UAC可以关闭。如果是,则必须执行旧学校方式的检查,如果用户不是管理员,则会设置错误对话框
(在线程的CurrentPrincipal上调用IsInRole(WindowsBuiltInRole.Administrator) )。

我实现了一些手动执行的代码:

using System.Security.Principal;
public bool IsUserAdministrator()
{
    bool isAdmin;
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
        isAdmin = false;
    }
    catch (Exception ex)
    {
        isAdmin = false;
    }
    return isAdmin;
}