Mik*_*oss 4 vb6 uac manifest windows-7
我们有一个VB6项目,可编译为ActiveX EXE,该文件名恰好在文件名中包含“ patch”一词(它是警察调度系统的一部分),这导致Windows 7上的Installer Detection认为它需要提升。
我不想重命名EXE,而是将清单资源嵌入到将要求asInvoker特权级别的已编译EXE中。通过阅读,我知道可以使用mtWindows SDK中的工具编译EXE之后执行此操作,但是我更愿意将清单放置在.RES文件中,以便在构建项目时将其编译到程序中。
有没有一种方法可以使用“资源编辑器”加载项将清单资源(资源类型24)添加到VB6项目中?我将清单文件添加为自定义资源,并尝试了几种不同的资源类型值,例如“ RT_MANIFEST”和“ 24”,然后通过使用mt重新提取清单来测试它是否正常工作,但是我无法获得它工作。
注意:正如我访问过的几页所述,我确实记得将清单的大小设为4字节的偶数倍,所以我认为这不是问题。
起初,我以为我会尝试rc创建一个.RES可以添加到项目中的文件。我以前从未使用rc过,因此在试图弄清楚时,最终进入了这个MSDN页面。
有趣的是typeNameId该页面上的描述(强调):
输入资源的名称或标识符。指定字符串名称或数字。如果使用数字,则在字符串前加上“#”以表示它代表数字。每个resourceType元素必须仅具有一个typeNameId属性。
我对自己想:“好吧,这很有趣,可能不适用于VB6的资源编辑器,但无论如何我都会尝试。”
瞧,如果您将清单文件添加为自定义资源,然后将其类型更改为#24(即使用#前缀),那么它将起作用!它已正确地作为清单资源嵌入在已编译的EXE中。
详细步骤如下:
1)创建清单文件。我使用了这个(请注意,在本例中,末尾的填充使文件恰好为608个字节):
<?xml版本=“ 1.0”编码=“ UTF-8”独立=“是”?>
<assembly xmlns =“ urn:schemas-microsoft-com:asm.v1” manifestVersion =“ 1.0”>
<assemblyIdentity version =“ 1.0.0.0” name =“ DispatchMonitor” type =“ win32” />
<description> DispatchMonitor RunAsInvoker修复</ description>
<trustInfo xmlns =“ urn:schemas-microsoft-com:asm.v2”>
<安全性>
<requestedPrivileges>
<requestedExecutionLevel level =“ asInvoker” uiAccess =“ false” />
</ requestedPrivileges>
</ security>
</ trustInfo>
</ assembly>
<!-填充文件大小甚至是4的倍数->
2)通过从“ 工具”菜单中选择“ 资源编辑器”,在VB6 IDE中打开资源编辑器(您可能必须首先在“ 加载项” >“ 加载项管理器”中启用它)。
3)如有必要,创建一个新的资源文件。
4)添加一个新的自定义资源(单击“?”图标左侧的按钮)。
5)出现文件选择对话框:选择在步骤1中创建的清单文件。
6)默认情况下,资源将添加到ID为101的“ CUSTOM”文件夹下。
7)双击新资源。将“类型”更改为“ #24Id”,将“ Id”更改为1。
8)保存您的更改并关闭资源编辑器。
| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |