微软在Windows Vista开始引入了UAC(用户账户控制)新技术(点击这儿了解什么是UAC)。当程序执行时须要权限的话,UAC会弹出警告消息:让用户确认是否赞成容许这个程序改变你的计算机配置,windows须要获得你的许可才可让程序继续执行下去。
一般咱们使用c#编写的程序不会弹出这个提示,也就没法以管理员身分运行。微软的操做系统使用微软的产品方法固然是有的,经过app.manifest配置能够使程序打开的时候,弹出UAC提示须要获得容许才能够继续,这样就得到了管理员的权限来执行程序。
方法以下:
打开vs200五、vs2008等工程,在【解决方案资源管理器】里查看是否有app.manifest这个文件,若是没有的话,经过如下方法建立:
方法1:
一、在【解决方案资源管理器】右键工程名称选择属性;
二、在弹出的该对话框中,选择【安全性】选项卡。
三、勾选【启用ClickOnce安全设置】,并选中【这是彻底可信的应用程序】。
四、保存工程,这时候app.manifest就自动建立了。html
打开app.manifest把默认的配置修改一下,经过代码的注释,能够知道须要修改的节点是【requestedExecutionLevel】c#
asInvoker : 若是选这个,应用程序就是以当前的权限运行。
highestAvailable: 这个是以当前用户能够得到的最高权限运行。
requireAdministrator: 这个是仅以系统管理员权限运行。
找到<requestedExecutionLevel level="asInvoker" uiAccess="false" />
把其改成<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
这时候修改完成,按下F5进行调试,一般会收到以下的错误提示:【ClickOnce 不支持请求执行级别“requireAdministrator”】。
事情好像发生了相互矛盾,上面开启【ClickOnce】便自动建立了app.manifest,如今修改了app.manifest却提示:ClickOnce 不支持请求执行级别“requireAdministrator”。
解决方法是:只要把【启用ClickOnce安全设置】不勾选就能够了。
若是操做步骤正确,按下F5进行调试,会弹出以下的提示框,VS具备提高的权限。
windows
这样咱们编写的应用程序在运行后,就会首先弹出这样一个提示框 , 点【Yes】后,程序才能够继续运行,而且得到系统管理员的权限。
方法2:
为工程项目添加一个类,应用程序清单文件(app.manifest)。安全
而后能够看到app.manifest的位置不在Properties属性里了,变成在引用里了,其节点内容也少了一些。app
剩下的方法和上面相同。这样跳过了【启用ClickOnce安全设置】这步,直接执行,不会出错了。ui