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




windows-7 administrator (8)

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

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


具体步骤如下。

  1. 将应用程序清单文件添加到解
  2. 将应用程序设置更改为“app.manifest”
  3. 将“requestedExecutionLevel”的标签更新为requireAdministrator。

请注意,使用此代码您需要关闭ClickOnce的安全设置,为此,请进入属性 - >安全 - > ClickOnce安全


在Visual Studio 2008上工作时,右键单击Project -> Add New Item ,然后选择Application Manifest File

在清单文件中,您可以找到标签requestedExecutionLevel ,并且您可以将级别设置为三个值:

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

要么

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

要么

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

要将您的应用程序设置为以管理员身份运行,您必须选择中间的一个。


在Visual Studio 2010中,右键单击您的项目名称。 点击“查看Windows设置”,这会生成并打开一个名为“app.manifest”的文件。 在该文件中,将“asInvoker”替换为“requireAdministrator”,如文件中的注释部分所述。


您可以使用ClickOnce安全设置创建清单,然后禁用它:

Right click on the Project -> Properties -> Security -> Enable ClickOnce Security Settings

点击它后,一旦创建该文件,将在项目的属性文件夹下创建一个名为app.manifest的文件,您可以取消选中Enable ClickOnce Security Settings选项

打开该文件并更改此行:

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

至:

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

这将使程序需要管理员权限。



按照

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

如果您还没有应用程序清单或者不知道如何添加应用程序清单,您将需要添加应用程序清单。 由于有些项目不会自动添加单独的清单文件,因此首先转到项目属性,导航到“ 应用程序”选项卡并检查以确保您的项目不排除轻敲底部的清单。

  • 接下来,右键单击项目
  • 添加新项目
  • 最后,找到并单击应用程序清单文件

您需要修改嵌入到程序中的清单。 这适用于Visual Studio 2008及更高版本:Project +添加新项目,选择“应用程序清单文件”。 将<requestedExecutionLevel>元素更改为:

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

用户在启动程序时获得UAC提示。 明智地使用; 他们的耐心会很快磨损。





elevated-privileges