VS2005(C#)在win7下申请UAC权限方法(已验证)

来源:互联网 发布:淘宝拍卖奢侈品可信吗 编辑:程序博客网 时间:2024/06/06 03:46

VS2005(C#)在win7下申请UAC权限方法(已验证)

公司使用VS2005和C#开发一套程序,使用配置文件保存一些配置信息,如数据库连接信息,语言信息等,配置文件和主程序在同一个父目录下,并且程序运行时会输出日志在同目录下的日志目录里面的文本文件里.把程序打成安装包,在windowsXP里面一切正常,读取信息和日志输出都OK,考虑到客户也很多用win7,于是进行win7下的测试.默认安装在系统盘里面的程序目录,一测试就出问题了,读写的配置文件根本就不是程序目录下的配置文件(估计是保存在用户数据目录里面了),而更加不可思议的是,日志根本就不输出,意味根本就不知道是什么问题导致的,后来想到是权限问题,win7和vista里面都控制比较严格,于是就使用右键的"以管理员身份运行",程序终于是运行正常了.
问题找出来了,那就要解决啊,想到要使程序已启动的时候就自己申请管理员权限,类似很多程序图标在win7下都会多一个盾牌标志,这些程序就会在运行的时候弹出帐户控制窗口来申请权限,在网上找了很久,都说是为项目加一个应用程序清单文件,就是app.manifest文件,可是这种方法,在VS2008下是正确的,在VS2005里面却死活不出来,网上还都说是这样.使人烦恼不已
为这个问题,搞了一天没结果.今天终于找到另一个不同的说法,app.manifest文件是需要添加修改的,但是还有一步骤要做,需要在项目的生成后
事件里面添加一些事件,依法试之,果然可以.因此特地记录下来,以免忘记.
以下内容来至http://blog.csdn.net/xue016013/article/details/6027484,先谢谢博主!
那在VS2005中如何设置manifest文件呢
1:首先在项目那新增一XML文件,名称为:你的程序名+".exe.manifest"
内容输入:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="你的程序名.exe" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
保存。
2:在项目文件那右键,选择生成事件,在“生成后事件命令行”中输入(包括双引号):
"$(DevEnvDir)../../SDK/v2.0/bin/mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" -outputresource:"$(TargetDir)$(TargetFileName)";#1
3:重新生成程序,如果你在Vista以上的操作系统,你就可以看见你程序的图标多了一个盾,
4:success.

原创粉丝点击