Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在只有本地CRT DLL的Windows上运行?_C++_Windows_Dll_Msvcrt_Vcredist - Fatal编程技术网

C++ 如何在只有本地CRT DLL的Windows上运行?

C++ 如何在只有本地CRT DLL的Windows上运行?,c++,windows,dll,msvcrt,vcredist,C++,Windows,Dll,Msvcrt,Vcredist,我有一个应用程序,打算与所有MSVC依赖项并排部署,以便不需要管理员访问才能安装MSVC可再发行文件。它应该依赖的唯一系统范围DLL是.NET。我还没有找到一种方法来测试这个功能,而不将它安装在一台完全库存的机器上并在那里进行测试,这对于手动和自动(CI)测试都非常不方便 在Windows中是否有一种相当简单的方法来关闭或拦截某些DLL的SxS查找?可能能够解决您正在查找的部分问题。但是CRT甚至在任何代码运行之前就已加载,因此您无法从代码中控制它。应用程序清单将是我能想到的唯一一个可以让您控制

我有一个应用程序,打算与所有MSVC依赖项并排部署,以便不需要管理员访问才能安装MSVC可再发行文件。它应该依赖的唯一系统范围DLL是.NET。我还没有找到一种方法来测试这个功能,而不将它安装在一台完全库存的机器上并在那里进行测试,这对于手动和自动(CI)测试都非常不方便


在Windows中是否有一种相当简单的方法来关闭或拦截某些DLL的SxS查找?

可能能够解决您正在查找的部分问题。但是CRT甚至在任何代码运行之前就已加载,因此您无法从代码中控制它。应用程序清单将是我能想到的唯一一个可以让您控制该部分的地方。令人难以置信的是,Microsoft会开发一种应用程序加载CRT的方法,而不在系统范围内安装它,但却无法在安装了Visual Studio(安装了系统范围的CRT)的系统上测试它。应用程序不会加载到那里。OS加载程序在解析导入时执行此操作。如果需要测试应用程序是否在干净的Windows安装上运行,请在干净的Windows安装上运行。如果用一个新的映像启动一个虚拟机似乎不方便(这是您问题的解决方案),那么您可能需要投资于更新的硬件。如果这不是一个选项,并且您希望监视从何处加载二进制文件,请启用加载程序快照。假设微软负责你的工作,这似乎是难以置信的。如果你把所有依赖项都放在应用程序目录中,这项工作应该是开箱即用的。请参阅“本地部署”部分了解和(以及Win10警告)。无论何时启动Windows Sandbox,都会根据本地系统的服务级别获得一个干净的系统。它就像一个虚拟机,无需安装虚拟机或配置映像。它在几秒钟内启动,在终止后不会留下任何痕迹。它提供了所有您似乎正在寻找的便利。