gpt4 book ai didi

security - list 中的 Visual Studio 2005 安全更新和 CRT DLL 版本

转载 作者:行者123 更新时间:2023-12-04 15:28:19 25 4
gpt4 key购买 nike

最近的 Visual Studio 2005 安全更新可能会给我们带来问题。

我们构建并在内部分发用 C++ 编写的 SDK。这些 SDK 只是头文件和静态库的集合。安装安全更新后,我们的 SDK 现在依赖于较新版本的 MSVC CRT DLL。这些 SDK 用于生成 EXE 文件的项目的下游。

如果这些 EXE 文件之一是使用混合 SDK 构建的(一些来自安全更新之前,一些来自之后),则生成的 EXE 文件会引用两组 MSVC 运行时 DLL。例如:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

这是否意味着在运行时此 EXE 将使用两个版本的 DLL?这是否意味着我们必须用这个 EXE 分发两个版本的 MSVC 运行时 DLL?

是否有一种简单的方法可以避免此问题,而无需强制使用 Visual Studio 2005 安全补丁构建所有 SDK? (这对于我们不想不必要地重建的一些较旧且相当稳定的 SDK 来说是不可取的)

是否可以简单地重写 SDK 或最终 EXE 文件上的 list 文件,以便仅提及一个版本的 MSVC CRT DLL?

我的理解是,相关更新如下:

Microsoft Visual Studio 2005 Service Pack 1 的安全更新:KB971090

http://go.microsoft.com/fwlink/?LinkId=155934

Microsoft Visual Studio 2008 Service Pack 1 的安全更新:KB971092

http://go.microsoft.com/fwlink/?LinkID=155933

我发现了另外两个类似的问题:

VC++: KB971090 and selecting Visual C Runtime DLL dependencies

Does the latest Visual Studio 2005 Security Update cause C runtime library issues when hot fixing customer sites

最佳答案

1) 是的,这意味着运行时正在使用这两个版本——这是您永远不想发生的事情。它应该只引用单个版本的 DLL(s)

2)我开发了一种方法来强制版本为 SP1 版本(没有安全更新)。我已经概述了 here

3)您可以完全禁用 list 并手动执行,但我不建议这样做,因为为调试和发布维护不同的 list 很痛苦,而且这是一种容易出错的处理问题的方式。最好使用我在上面(2)中提到的解决方法。

关于security - list 中的 Visual Studio 2005 安全更新和 CRT DLL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com