900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > VC编写在windows7下以管理员权限运行的程序

VC编写在windows7下以管理员权限运行的程序

时间:2020-03-12 15:25:51

相关推荐

VC编写在windows7下以管理员权限运行的程序

03月11日 11:29:36

文章来源 :/Article/document850.htm

方法一: VC6:导入manifest文件

1.新建一文件命名为 xxx.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="test.exe.manifest"

type="win32"

/>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

<security>

<requestedPrivileges>

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

</requestedPrivileges>

</security>

</trustInfo>

</assembly>

注:此文件只要扩展名是.manifest文件名可以任意。文件内容的name属性值也可以为任意。(VC6.0下经过测试)

2.把此文件"import"到资源文件中,资源类型为24,资源ID为1,

注:经测试资源类型必须为24,资源ID也必须为1,

3.重新编辑即可,在windows7下该程序图标有一个盾状小图标,双击运行会出现对话框要求提升为管理员权限。

如果是VC 或者 就更简单了,直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 这样你的程序直接运行就拥有管理员权限了。

如果是C#.NET 或,则直接在项目中添加一个manifest文件,如app.manifest,创建后,把<requestedExecutionLevel level="asInvoker" uiAccess="false" />中的asInvoker替换成requireAdministrator即可,如:

<?xml version="1.0" encoding="utf-8"?>

<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="/2001/XMLSchema-instance">

<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">

<security>

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

<!-- UAC Manifest Options

If you want to change the Windows User Account Control level replace the

requestedExecutionLevel node with one of the following.

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

If you want to utilize File and Registry Virtualization for backward

compatibility then delete the requestedExecutionLevel node.

-->

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

</requestedPrivileges>

</security>

</trustInfo>

</asmv1:assembly>

方法二:修改注册表:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]

"C:\\Program Files\\win7test2.exe"="RUNASADMIN"

将上面的内容保存为.reg文件,基中把C:\\Program Files\\win7test2.exe改为真实环境的应用程序地址,双击运行即可。

这种方法后应用程序图标不会有盾状图标,但双击运行仍然会弹出对话框要求提升权限。

附:XP风格的manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<dependency>

<dependentAssembly>

<assemblyIdentity

type="win32"

name="mon-Controls"

version="6.0.0.0"

processorArchitecture="X86"

publicKeyToken="6595b64144ccf1df"

language="*"

/>

</dependentAssembly>

</dependency>

</assembly>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。