【发布时间】:2010-12-20 11:25:53
【问题描述】:
我为在 Windows 7 上运行的 VB6 应用程序创建了一个清单文件(不是为了任何视觉样式更改,只是为了确保它访问通用注册表而不是虚拟注册表)
exe 名称为 Capadm40.exe,清单名称为 Capadm40.exe.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="CompanyName.Capadm40"
type="win32"/>
<description>Administers the System</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
但是,这似乎没有任何区别。即应用程序仍在使用虚拟化注册表配置单元。同样奇怪的是,当我在应用程序 exe 的属性中取消勾选“以管理员身份运行此程序”选项后,Windows 仍然在应用程序图标上显示一个盾牌,导致我认为这是我的 Windows 安装的一些问题,而不是而不是清单的错误。有什么想法吗?
【问题讨论】:
-
如果exe上有屏蔽,运行的时候肯定会提示提升吗?在那种情况下,它不会获得虚拟化,至少不会获得 UAC 虚拟化。在尝试处理清单问题之前,您真的确定它正在写入虚拟配置单元位置吗?
-
它不要求提升,也不应该(我认为显示盾牌的图标一定是某种 Windows 错误),因为当它运行时,它使用的是虚拟化注册表,因为路径当我右键单击并运行管理员时,数据是不同的。问题是清单似乎没有效果(即使我将级别更改为requireAdministrator)
-
清单确定有效吗?例如是 UTF-8 编码的吗?
-
是的,这是我开始检查的内容,因为一些文本编辑器在后台透明地更改了编码
标签: vb6 windows-7 uac manifest vb6-migration