利用manifest文件或资源文件让程序以管理员身份运行

    进入Vista时代特别是Win10以后,管理员机制显得很严格,以前能正常运行的程序也出了问题。Win7的盗版系统较多,义务为我们提升到了管理员权限。而Win10原生宣称免费,所以默认就是分清权限的,最明显的,是具有管理员权限的程序图标右下角都会出现一个盾牌。

    那么,我们能不能让我们的程序也天生具有这样的盾牌呢?

以下为转载内容:

最近弄vs2005 可执行文件在win7上运行,发现兼容问题

经过网上搜寻得到一下答案,谢谢网上分享的朋友


建立文本文件, 命名为”可执行文件名.exe.manifest”,并加入以下代码:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  
<assemblyIdentityversion="1.0.0.0" processorArchitecture="X86" name="VistaLogoDemo" type="win32"/>
  
<description>Description of your application</description>
  
<!-- Identify the application security requirements.-->
  
<trustInfoxmlns="urn:schemas-microsoft-com:asm.v3">
    
<security>
      
<requestedPrivileges>
        
<requestedExecutionLevellevel="requireAdministrator" uiAccess="false"/>
      
</requestedPrivileges>
    
</security>
  
</trustInfo>
</assembly>

运行级别有3种,这里使用 requireAdministrator 表示以管理员权限运行,如果写为 aslnvoker,那么就是以普通权限运行。

将该文件存放运行文件目录下

打开vs2005 只加载生成的exe执行文件

添加资源导入manifest文件命名为RT_MANIFEST,将其ID改为1

保存exe。

这样在V或7下就会有盾牌标志,程序启动会提示UAC而管理员权限启动


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

另外以下这个网站是微软官网提供的方法:http://support.microsoft.com/kb/944276/zh-cn

此本文占位符 appname 指的是一个示例应用程序。您应当用 appname 占位符替换应用程序的实际名称。

若要在可执行文件中嵌入清单文件,请按照下列步骤操作:

  1. 在 Visual 有关 Studio 的 2005 年打开应用程序。
  2. 在 生成 菜单上单击 配置管理器
  3. 在配置管理器窗口中确定 x86 项是否已在 活动解决方案平台 列表中存在。
    • 如果不存在 x86 项,请转到步骤 4。
    • 如果 x86 项已经存在,选择 <Edit…> 在 活动解决方案平台 列表中。编辑解决方案平台 对话框中单击 x86、 单击 删除,然后单击 关闭
  4. 在配置管理器窗口中选择 <New…> 在 活动解决方案平台 列表中。
  5. 在 新建解决方案平台 对话框中键入 x86 中 键入或选择新的平台,选择 <empty>复制设置从 列表中单击以清除 创建新的项目平台 复选框,然后单击 确定
  6. 在配置管理器窗口中单击 关闭

    注意如果您使用生成后的脚本调用 MT.exe 文件,删除生成后的脚本。在这种情况下不必调用 MT.exe 文件,若要嵌入清单文件。
  7. 在 生成 菜单上单击 重新生成解决方案
  8. 在 文件 菜单上单击 关闭解决方案
  9. 启动记事本,然后在新文档中粘贴以下代码:
    <?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="asInvoker" uiAccess="false"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    
  10. 在 文件 菜单上单击 另存为,然后将该文件另存为 appname exe.manifest。
  11. 在 文件 菜单上单击 关闭
  12. 在 Visual 有关 Studio 的 2005 年打开 appname.exe 文件。显示树视图。
  13. 单击 appname.exe 节点,然后单击 添加资源
  14. 添加资源 对话框中单击 导入,找到 appname exe.manifest 文件,然后单击 打开
  15. 自定义资源类型 对话框中键入 RT_MANIFEST,然后单击 确定
  16. 在 属性 面板中的更改为"1""101"从 ID 属性的值。

    注意如果要验证 XML 清单中的正确双击在树视图中查看二进制文件清单。ASCII 数据显示。
  17. 在 文件 菜单上单击 全部保存

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


猜你喜欢

转载自blog.csdn.net/asanscape/article/details/71229814
今日推荐