摘自:http://blog.csdn.net/humanking7/article/details/51926224

承接了一个项目,给甲方交接的时候,在它的电脑中运行出现了这个错误。

应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具

当时没有截图,不过图像的效果是这样的:

pic1

因为他们是新装的系统,给他们装的是Win7 32bit的系统,其它什么都没安装,根据网上的说明,估计是两个问题。

  1. 系统设置问题,设置不正确;
  2. 如果1的问题解决了,还出现问题。则系统缺少Microsoft Visual C++ 20XX(运行库)文件(XX表示:05、08、10)。
  1. 开始 – 运行(输入services.msc)- 确定或回车,打开:服务(本地);

这里写图片描述 
2. 我们在服务(本地)窗口找到:Windows Modules Installer服务,查看是否被禁用;

这里写图片描述 
3. 如果Windows Modules Installer服务被禁用,我们必须把它更改为启用 – 手动,重启计算机,再安装应用程序。

这里写图片描述

网上是去百度上搜索对应的库下载安装。 
我是直接用驱动精灵里面系统助手系统组件进行自动修复。

这里写图片描述

出现这样错误是因为系统缺少某些运行库,用sxstrace工具可以看究竟,用法:

  1. 管理员运行cmd ,输入:SxsTrace Trace -logfile:SxsTrace.etl,启动跟踪;

  2. 执行目标程序,在弹出错误对话框后(不要关闭对话框);

  3. 回到cmd命令行,按回车键,然后输入执行命令:SxsTrace Parse -logfile:SxsTrace.etl -outfile:SxsTrace.txt

下面是我运行的情况:

C:\Windows\system32SxsTrace Trace -logfile:SxsTrace.etl 
已启动跟踪。跟踪将保存到文件 SxsTrace.etl。 
按 Enter 停止跟踪…

C:\Windows\system32>SxsTrace Parse -logfile:SxsTrace.etl -outfile:SxsTrace.txt 
正在分析日志文件 SxsTrace.etl… 
分析完毕! 将输出保存到文件 SxsTrace.txt。

C:\Windows\system32>

打开SxsTrace.txt,下面是其内容:

  1. =================
  2. 开始生成激活上下文。
  3. 输入参数:
  4. Flags = 0
  5. ProcessorArchitecture = x86
  6. CultureFallBacks = zh-CN;zh-Hans;zh;en-US;en
  7. ManifestPath = D:\nwpu\simulation_mapSendUDP\Test_SendPackUDP.exe
  8. AssemblyDirectory = D:\nwpu\simulation_mapSendUDP\
  9. Application Config File =
  10. -----------------
  11. 信息: 正在解析清单文件 D:\nwpu\simulation_mapSendUDP\Test_SendPackUDP.exe
  12. 信息: 指令清单定义标识是 (null)。
  13. 信息: 参考: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
  14. 信息: 正在解析参考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
  15. 信息: 正在解析 ProcessorArchitecture x86 的参考。
  16. 信息: 正在解析区域性 Neutral 的参考。
  17. 信息: 正在应用绑定策略。
  18. 信息: 未找到发布服务器策略。
  19. 信息: 未找到绑定策略重定向。
  20. 信息: 开始程序集探测。
  21. 信息: 未找到 WinSxS 中的程序集。
  22. 信息: 尝试在 C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL 上探测指令清单。
  23. 信息: 尝试在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT.DLL 上探测指令清单。
  24. 信息: 尝试在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT.MANIFEST 上探测指令清单。
  25. 信息: 尝试在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL 上探测指令清单。
  26. 信息: 尝试在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST 上探测指令清单。
  27. 信息: 未找到区域性 Neutral 的指令清单。
  28. 信息: 结束程序集探测。
  29. 错误: 无法解析参考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
  30. 错误: 生成激活上下文失败。
  31. 结束生成激活上下文。

从中得到一些信息:

“错误: 无法解析参考 Microsoft.VC90.DebugCRT,processorArchitecture=”x86”,publicKeyToken=”1fc8b3b9a1e18e3b”,type=”win32”,version=”9.0.21022.8”。

错误: 生成激活上下文失败。”

可以知道出错的exe是用VC90编译器编译的(我其中一个类库使用VS2008编译的),VC90是visual studio 2008 中的C++开发工具。 安装visual studio 2008 中的C++开发工具后,就可以运行了。

简单的解决办法: 
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\amd64\Microsoft.VC90.CRT 
将其中的所有文件(Microsoft.VC90.CRT.manifest,msvcm90.dll,msvcp90.dll,msvcr90.dll)拷贝到你的exe文件同级别的位置即可,或根据编译所用的vc版本来找到相应的文件

但是,还是不行,于是我,给目标环境装了VS2008,问题完美解决。什么鬼!什么鬼!什么鬼!,就这样吧,许多问题对我来说,依然是玄学问题。

我提出了一个设想,如果这个程序调用的那个类库LIB(就是我用VS2008编写的),如果用静态编译,是不是不会出现这个问题,当然我也不可能为了测试这个软件把现在电脑里的VS2008卸载了,以后有机会在测测吧。

版权声明:本文为wureed原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wureed/p/8249872.html