VS编写程序主动要求系统管理员权限(UAC控制)

程序在Vista及其以上版本中,不以管理员权限运行,会被UAC(用户帐户控制)阻止访问系统某些功能,如修改注册表操作,例如本人之前编写的用友工具箱,如果操作系统没有关闭UAC帐户控制,直接运行工具箱,而不是右击“以管理员身份运行”,点击某些功能会有如下提示:

如何让程序以管理员权限运行呢?

一种方法是不要直接双击程序,而是右击,选择“以管理员身份运行”

另外一种就是修改程序的manifset部分代码,让程序直接提示要求获取权限,下面来讲这个方法的操作过程。(以VS2015为例)

一、C#程序设置方法:

1.1、打开工程的属性对话框,找到“安全性”页签,然后将“启用ClickOnce安全设置”打勾。如下图,打勾前,右侧的Properties下面没有app. manifest,打勾后就有了。

 

 

1.2、双击右侧的app. manifest,跳转到对应代码界面,找下以下代码:

 
   
 
   

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

将其替换为如下代码:(也就是将上面的"asInvoker" 替换为 "requireAdministrator"

 
   
 
   

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

此时编译程序,会有错误提示:

ClickOnce 不支持请求执行级别requireAdministrator

1.3、再返回到1.1步骤中的对话款,将“启用ClickOnce安全设置”选项的对勾再去掉,编译程序即可。

 

二、VB.NET程序设置方法:

2.1、打开工程的属性对话框,找到“应用程序”页签,点击“查看Windows设置”按钮

 2.2、程序自动跳转到app. manifest,找下以下代码:

 
   
 
   

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

将其替换为如下代码:(也就是将上面的"asInvoker" 替换为 "requireAdministrator"

 
   
 
   

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

2.3、重新编译程序即可。


经过以上的代码修改后编辑的程序,如果系统没有关闭UAC控制,则在双击运行时,会给出如下提示:

我们点击“是”就相当于获取了权限,然后就可以正常操作了。

你可能感兴趣的:(C#)