vs2005让程序在win7下获得管理员权限
2016-03-20 23:16
363 查看
1、UAC简介
从WindowsVista系统开始,微软为了提高系统安全引入了UAC(User Account Control,用户帐户控制)技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员密码。通过在这些操作启动前对其进行验证,UAC 可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改。UAC可在控制面板->用户->用户账号设置进行设置,默认设置如下图:
开启后,当打开需要管理员权限运行的程序时就会弹出提示框询问用户:
2、让vs2005开发的程序获取管理员权限
vs2005开发的程序默认是不会触发UAC的,也就是说它打开时只有普通用户权限,除非用户右键程序使用管理员权限打开。那么怎么让程序双击打开时就获取管理员权限呢,如果是vs2008以上版本,那么通过项目属性->连接器->清单文件->UAC执行级别,设置为requireAdministrator即可。但是vs2005并没有这个设置,我们可以通过添加manifest来实现。首先新建一个.manifest文件,输入以下内容并保存:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>然后在项目属性设置里添加.manifest文件即可:
添加完之后,编译的程序打开即可弹出UAC权限框获取管理员权限。
3、可设置的权限级别
manifest里的level可以设置三种级别:asInvoker: 程序以当前用户权限允许
highestAvailable: 以当前用户可以获得的最高权限运行
requireAdministrator: 以系统管理员权限运行
highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限,它们的区别是:
如果我们不是以管理员帐号登录,level设置为requireAdministrator,那么应用程序仍然会弹窗提示用户获取管理员权限,用户拒绝则会运行失败,无法启动
而如果我们不是以管理员帐号登录,level设置为highestAvailable,则应用程序不会弹窗提示用户获取管理员权限,而是直接可以运行,但是是以当前帐号的权限运行而不是系统管理员权限运行
如果我们希望程序必须以管理员权限运行,那么建议采用
requireAdministrator 来配置
相关文章推荐
- Python基础--构造函数
- 【原】 Spark中Worker源码分析(二)
- 20145321 《Java程序设计》第3周学习总结
- 3月20日随笔
- UVA 11827 Maximum GCD
- Undefined symbols for architecture i386:和"_OBJC_CLASS_$_xx", referenced from:问题解决方法
- php:贪婪模式与懒汉模式
- C/C++中的函数指针
- Eclipse+Git搭建小型团队开发环境(一)
- 问题 H: 2.4.5 Fractions to Decimals 分数化小数
- 20145316许心远《Java学习笔记》第三周总结
- 《LINUX内核设计与实现》第五章学习总结
- [内置引用数据类型]——排序
- 比较C#的委托与C语言的函数指针,以及用流程图来理解C#中事件,发布与订阅的逻辑
- java线程简单介绍
- bzoj 2326: [HNOI2011]数学作业
- VC2013一些感受
- JSP中page和pageContext的区别
- SVN命令使用详解
- Android——保存和恢复用户状态