最新消息:本站技术交流 QQ 群:28124927

让VC程序在Win7下获得管理员权限

Windows 应用编程/MFC exchen 2824浏览 0评论

VC编译出来的应用程序在win7或vista下运行,有可能因为权限问题,不能成功运行。
用下面的办法,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。

1.打开应用程序的源代码工程

2.添加一个“custom”资源,”resource type”填24,把资源ID改为1,然后把以下内容复制到资源内容中保存

3.重新编译应用程序,此时会发现,广用程序的图标在Win7下会多出一个小盾标志。
这时双击的运行的时候,就会跳出框提示,获取管理员运行。
————————————————————————————————–
上面的资源文件里有一个配置选项叫requestedExecutionLevel, 这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择,如下所示:
asInvoker : 如果选这个,应用程序就是以当前的权限运行。
highestAvailable: 这个是以当前用户可以获得的最高权限运行。
requireAdministrator: 这个是仅以系统管理员权限运行。
默认情况下是 asInvoker。highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限。那么这两个选项的区别在哪里呢?他们的区别在于,如果我们不是以管理员帐号登录,那么如果应用程序设置为 requireAdministrator ,那么应用程序就直接运行失败,无法启动。而如果设置为 highestAvailable,则应用程序可以运行成功,但是是以当前帐号的权限运行而不是系统管理员权限运行。如果我们希望程序在非管理员帐号登录时也可以运行(这种情况下应该某些功能受限制) ,那么建议采用 highestAvailable 来配置。
关于requestedExecutionLevel 设置的权威文档请参考下面链接:
Create and Embed an Application Manifest (UAC)

转载请注明:exchen's blog » 让VC程序在Win7下获得管理员权限

发表我的评论
取消评论
表情

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

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