在Vista和Win7这类新操作系统中,很多程序是以受限用户权限运行,这就导致了有些对系统资源访问的API无法正常工作,比如AcquireWriteLock,以及对注册表的访问API(当然,如果程序运行在ring 0下则没问题).
可以使用如下方法在程序启动时弹出UAC提示来获得管理员执行权限,而不用去设置文件属性:
1.新建一个txt文件,命名为xxx.manifest,里面加入如下内容:
version="1.0.0.0"
processorArchitecture="X86"
name="xxx.exe.manifest"
type="win32"
/>
uiAccess的作用则是如果您希望应用程序绕过用户界面保护级别并将输入引导到桌面上的更高权限窗口(如屏幕键盘),则为 true;否则为 false。默认为 false。仅针对用户界面辅助功能应用程序设置为 true。
2.文本方式编辑项目的.rc文件,在最后加入下面的语句:
1 24 "xxx.manifest"
其中,"1"代表资源ID,必须是"1"。"24"代表资源类型,比如RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等都是资源类型,"24"代表了RT_MANIFEST
3.编译你的项目.在win7/vista下会看到exe文件上多了个小盾牌,就表示成功了.
BTW,还有一个方法,更简单:
把exe文件改名,文件名中包含"install"/"setup"/"update"等,win7/vista很敏感,直接就会出UAC提示了.
阅读(1944) | 评论(0) | 转发(0) |