【问题标题】:Program Compatibility Assistant Manifest Not working in Vista32程序兼容性助手清单在 Vista32 中不起作用
【发布时间】:2012-09-21 14:15:46
【问题描述】:

当我运行我的应用程序“驱动程序安装程序和卸载程序应用程序”时,一旦我的 exe 成功结束,我就会得到一个“程序兼容性助手”窗口。通过 SO 链接和谷歌搜索后,我找不到解决方案来避免 vista 32 中的“程序兼容性助手”窗口。我使用下面的清单来避免 PCA,它按预期工作(在 Windows 7 中没有得到任何 PCA 窗口)但是除了windows vista 32?我应该怎么做才能完成这项工作?

在为我的安装程序应用程序使用以下清单后,我不是 在 windows 7 中获取 PCA 窗口,但它出现在 windows vista 上 32 位。 vista32中如何避免PCA窗口?

一些相关的问题是:

这是我使用的清单:

 <?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="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="Unins.exe"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--The ID below indicates application support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates application support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
</asmv1:assembly>

下面是我得到的 PCA 窗口的快照...

更新:PCA 窗口的根本原因是“我的安装程序没有在添加或删除程序中创建条目”。我让我的应用程序在“添加或删除程序”中输入了一个条目,但没有得到任何 PCA 窗口。但我不想在添加或删除程序中输入。

25-09-12 更新:我有一个可执行文件说 A.exe,它发现 操作系统的体系结构,取决于它调用的体系结构 A64.exe or A86.exe。在这种情况下,我是否想要为所有人提供清单 exe的(A.exe,A64.exe,A86.exe)?现在我只有 A.exe 的清单。

【问题讨论】:

  • @Deanna 我已编辑。简而言之,我的应用程序的上述清单在 Windows 7 中没有显示 PCA 窗口,但它出现在 Vista32 位中?
  • @Deanna 对此有何想法或仍想改进我的问题?
  • 我现在没有答案。
  • @Deanna 我要设置赏金来吸引更多关注吗?我真的被困在这个......
  • 如果你愿意,这就是赏金的目的。

标签: winapi windows-vista manifest compatibility uac


【解决方案1】:

为了完全退出 PCA,您肯定需要在所有三个可执行文件中包含清单。

【讨论】:

  • 我不太了解究竟是什么触发了您的 PCA,以及为什么它只发生在 Vista 32 上。但是,我确实知道 supportedOS 清单部分选择退出 PCA,并且清单不会被新创建的进程继承。我认为这就足够了。我不想在另一个问题上写一个相当含糊的 cmets 的答案。我没有完整的细节来解释为什么您的原始版本的行为与它完全一样,但我确实知道问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2014-07-15
  • 2011-03-05
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
相关资源
最近更新 更多