您的位置:首页 > 其它

用 VC6 制作 windows 7 8 以管理员权限运行的程序

2017-01-05 14:58 495 查看
Windows 7/8 的系统安全机制得到了很大的提高,不同的程序根据功能可以在不同的权限级别下运行,新的程序设计工具比如 Visual Studio 2005 以后的版本编译生成的程序都具备这种权限请求机制,但早期的 Visual C++ 6.0 则由于太过古老,生成的程序需要手工做一些设定才能获取合适的权限。


1

  Win7/8 是以一份程序集清单 Assembly Manifest 文档来获取程序需要的权限信息的,这份清单可以以资源形式内嵌入应用程序,也可以以外置文件形式来和程序放置在一起,如果你能够重新编译程序,则建议使用第一种,使用内嵌式程序清单的程序在 Win7/8 中的图标会有盾牌标志,而使用外置形式则没有。

  程序集清单的内容如下:

<?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>

  上述清单指定了该程序运行需要管理员权限,如果需要使用其他权限,则可以用以下三者之一替换其中的 requestedExecutionLevel 节点。

<!-- 普通权限 -->

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

<!-- 管理员权限 -->

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

<!-- 最高权限 -->

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

  对于外置程序集清单,可以将上述内容的文件以 应用程序名.Manifest 的文件名和程序放置在同一目录下即可,比如名为 test.exe 的应用程序集清单应命名为 test.exe.manifest 。

  接下来重点讲述第一种内嵌形式的程序集清单如何设置

2

  在 VC6 中切换到资源视图,在资源节点上点击右键,选择 “Insert”插入新资源

,然后选择自定义资源类型 "Custom",并输入类型:24,然后在该资源上点击右键,设置资源 ID 为 1

















3

  双击该资源类型 24,将上述 manifest 文件内容粘贴到资源里,保存,然后重新编译生成应用程序即可。





4

  用上述方法生成的应用程序,在 Win7/8 系统里图标会有盾牌字样,双击此应用程序,会弹出用户账户控制的提示信息。

END


注意事项

  选择合适的权限而不是把所有程序都设置为需要管理员权限,如果你的应用程序并不涉及系统关键操作,则无需做此设置,因为这会限制你的应用程序使用,在一些无法获取管理员权限的场合(比如有权限要求的办公用电脑)会带来烦恼。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: