manifest - 如何防止使用嵌入式 list ?

标签 manifest side-by-side regfreecom winsxs

我正在开发许多使用 RegFree COM 激活的应用程序,除了其中一个应用程序是使用使用 JIT 类型编译器的旧技术运行之外,一切都运行良好。

为了让 RegFree COM 正常工作,我必须向启动的可执行文件提供一个 list (如果我错了请纠正我)并列出我的依赖项。我的所有其他应用程序都是内部构建的,我可以完全控制我的 list (创作以及是否嵌入它,是否并排放置等等)。但是这个 JIT 编译器(ala Java JRE)不是我的,它已经包含(嵌入)了一个 list 。

我已经提取 list (使用 MT 和 -inputresource 和 -outfile),修改它并重新嵌入它。它按预期工作。但是,由于对该可执行文件没有所有权,我担心这种操作的合法性(修改第三方的可执行文件并重新分发它!)并且希望避免做这样的事情。 另外,我担心在某些时候这个可执行文件可能会被第三方签名,因此修改嵌入式 list 会破坏签名。

有没有办法让 sxs-loader 先寻找另一个 list ?似乎如果它找到一个嵌入的,它默认采用它(在大多数情况下都很好)。 我可以提供一个配置文件或任何可以跳过嵌入式 list 并使用我并排提供的 list 的文件(myExe.exe.manifest,而不是 myExe.exe 中的 RT_MANIFEST 资源)吗?

最佳答案

据我所知,你只能在整个系统范围内进行。将其添加到注册表中:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
"PreferExternalManifest"=dword:00000001

确保trip activation context cache通过更新您的可执行文件的上次修改日期,否则您的 list 更改将不会被提取(重命名和重命名它似乎有效)。

在 Win XP 上,外部 list 优于内部 list ,但自 Windows Server 2003 Service Pack 1 起,他们将其更改为相反。

关于manifest - 如何防止使用嵌入式 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903803/

相关文章:

android - 单击文件浏览器中的文件时,将我的程序添加到 "Complete action using..."列表

c# - .NET 4.6 中的 EventSource 和事件查看器

java - *.jar/META-INF/*.* 中有哪些文件?

c++ - native 应用程序可以使用免注册 COM 来使用 .NET COM 组件吗?

是否显示对主可执行文件以外的项目的依赖关系?

vb6 - OleControl 实例化为错误类型 - 仅在 Reg Free COM 中使用时?

com - 为免注册 COM 生成 list 文件

linux - 无法使用 ffmpeg 从 Smooth Streaming Manifest 文件获取信息

c++ - 并排疯狂 - 在同一台计算机上运行二进制文件

c++ - 需要深入了解如何为 C++ 程序生成 list