c++ - 我可以在不安装可分发的 VC++ 程序包的情况下将 MSVCRT DLL 与我的应用程序捆绑在一起吗

标签 c++ visual-studio-2010 winapi msvcrt

我有一个复杂的应用程序,它不能与 CRT 静态链接,但另一方面不需要安装管理员权限(因为它没有做任何需要它的事情)。安装 CRT 以便它可以动态链接的正常方法是安装 MS 可分发 CRT,但它需要管理员权限。

我正在考虑简单地将 MSVCRT100 DLL 放在与可执行文件相同的目录中以缓解该问题,但我不确定这种做法是否有任何缺点,因为它在我所见的任何地方都没有得到宽恕或谴责。除了遵循静态链接与安装可分发文件的通常做法外,还有什么理由不这样做吗?

最佳答案

简短的回答是可以。

它甚至是微软网站上描述的部署应用程序的选项之一 http://msdn.microsoft.com/en-us/library/dd293565.aspx

Copy the appropriate MFC and C Run-Time (CRT) library files—for example, for an x86 platform and Unicode support, copy mfc100u.dll and msvcr100.dll from \Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\—and then paste them in the \Release\ folder of your MFC project. For more information about other files that you might have to copy, see Determining Which DLLs to Redistribute.


缺点是可再分发包由 Microsoft 安全修复程序更新。因此,如果部署了安全修复程序,您的应用程序将不会使用它,并且可能仍然不安全。我不是很喜欢,但它是 winsxs 目录的想法,并且自 visual 7.0 以来就已体现出来,它“帮助”您的应用程序始终使用最佳版本。

关于c++ - 我可以在不安装可分发的 VC++ 程序包的情况下将 MSVCRT DLL 与我的应用程序捆绑在一起吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19808262/

相关文章:

c++ - 允许 32 位应用程序在 FreeBSD 下使用超过 4GB 的内存

c++ - Windows 8 中的过剩闲置 - 重新渲染

c++ - 为什么 std::basic_string 的成员在 VS2010 中是公开的?

c++ - 微软运行时库

winapi - 使用 dllexport 从 DLL 导出函数

Windows 关机 - 关机命令或 ExitWindowsEx

c++ - Deviarev2 Hook API : Hook into existing process winapi calls?

c++ - 转到 http : no such file after sending image from Qt client

c++ - 我如何将内存读入 wstring?

visual-studio-2010 - 在生产 Web 服务器上安装 Visual Studio 的原因