最新消息:点击查看大S的省钱秘笈

MFC 支持弹出UAC对话框获取系统权限

编程相关 Slyar 190浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

恩,这次用1个修改系统时间的程序来说明,界面如图。

用Win7系统的人应该知道UAC是什么了,关掉UAC可以省掉很多麻烦事,同时也看不到程序图标上的小盾牌,也不会提示获取系统权限的对话框。

这里讨论没有关闭UAC的情况,默认情况下运行的程序是不具有系统权限的,也无法对操作系统做任何修改,而修改系统时间正属于这一类,所以如果程序中不添加对UAC的支持,运行的程序是无法成功修改系统时间的。当然,直接在程序图标上按鼠标右键,选择使用管理员权限打开也是可以的。

呃,好像说的有点简单,不过知道UAC是什么的应该看得懂,不再解释了,直接写一下添加UAC支持的方法。

1、打开工程的资源视图

2、选择"Insert resource",选择"custom","resource type"填24,资源ID为1,然后把以下内容复制到资源内容中保存(看到的是16进制内容)

<?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="mulitray.exe.manifest" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

3、编译连接,此时就可以看到程序图标上出现了小盾牌,运行程序时弹出UAC对话框,获得管理权限

注:

requestedExecutionLevel可以指定为三个值:

asInvoker:默认选项,新的进程将简单地继承其父进程的访问令牌。

highestAvailable:应用程序会选择该用户允许范围内尽可能宽松的安全上下文。对于标准用户来说,该选项与asInvoker一样,而对于管理员来说,这就意味着请求非限制访问令牌.

requireAdministrator:应用程序需要管理员的非限制访问令牌。运行该程序时,标准用户将要输入管理员的用户名和密码,而管理员则要在弹出的确认对话框中进行确认。

(SetSysTime.rar)

转载请注明:Slyar Home » MFC 支持弹出UAC对话框获取系统权限

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (8)

  1. 技术文章,支持一下。
    SKF6年前 (2010-11-30)回复
  2. 拜读博主的好文章了
    久久博客6年前 (2010-11-29)回复
  3. 我只知道mfc是非常复杂的东西
    睿智小超人6年前 (2010-11-28)回复
  4. 技术强大啊,代码时代
    木雕6年前 (2010-11-20)回复
  5. 拜读楼主大作,感谢分享好东西!
    非主流6年前 (2010-11-13)回复
  6. 这篇文章好
    傻傻6年前 (2010-11-09)回复
  7. 过来学习下,好文长知识。
    匿名6年前 (2010-11-09)回复
  8. 文章看不下去了……
    Epile6年前 (2010-11-09)回复