程序在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控制,则在双击运行时,会给出如下提示:
我们点击“是”就相当于获取了权限,然后就可以正常操作了。