c#通过app.manifest使程序以管理员身份运行
微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC)。当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去。
通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序。
方法如下:
打开vs2005、vs2008等工程,在【解决方案资源管理器】里查看是否有app.manifest这个文件,如果没有的话,通过以下方法创建:
方法1:
1、在【解决方案资源管理器】右键工程名称选择属性;
2、在弹出的该对话框中,选择【安全性】选项卡。
3、勾选【启用ClickOnce安全设置】,并选中【这是完全可信的应用程序】。
4、保存工程,这时候app.manifest就自动创建了。
打开app.manifest把默认的配置修改一下,通过代码的注释,可以知道需要修改的节点是【requestedExecutionLevel】
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具有提升的权限。
这样我们编写的应用程序在运行后,就会首先弹出这样一个提示框 , 点【Yes】后,程序才可以继续运行,并且获得系统管理员的权限。
方法2:
为工程项目添加一个类,应用程序清单文件(app.manifest)。
然后可以看到app.manifest的位置不在Properties属性里了,变成在引用里了,其节点内容也少了一些。
剩下的方法和上面相同。这样跳过了【启用ClickOnce安全设置】这步,直接执行,不会出错了。
最新文章
- 微信支付curl出错及错误码解决方案
- Java中run(), start(), join(), wait(), yield(), sleep()的使用
- 关于Hellas和Greece
- IOS杂笔- 7(类方法load与initialize的区别 浅析)
- Windows Live Writer教程及代码高亮工具
- Get the item a SharePoint workflow task is associated with
- HTML解析引擎:Jumony 开源项目
- 抽象数据类型Triplet的C语言实现
- Cocos2dx 多线程
- 一个菜鸟所喜欢用的响应式布局,操作方便简单、时尚简约,适合新手!(一个Dreamweaver cs6生成响应式布局)
- java 写文件解析
- AS3开发必须掌握的内容
- 怎么利用composer创建laravel项目
- Java开源生鲜电商平台-账单模块的设计与架构(源码可下载)
- Android Gradle Task-中文
- Jmeter测试报告生成
- bounds的应用
- Java8 使用
- 牛客网-《剑指offer》-矩形覆盖
- C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑
热门文章
- eclipse memory analyzer对系统内存溢出堆文件解析(转)
- Python学习day03 - Python基础(1)
- JS基础语法之DOM01(找标签、改属性样式)
- C#去掉字符串两端空格以及去掉字符串中多余空格保留一个空格
- double转integer
- 比特镇步行(Walk)【虚点+bfs+dfs】
- C#墨攻IOC[转]
- 洛谷P3745 [六省联考2017]期末考试
- 【BZOJ4161】Shlw loves matrixI
- IO流16 --- 对象流操作字符串 --- 技术搬运工(尚硅谷)