摘自:http://blog.csdn.net/humanking7/article/details/51926224
1.問題描述
承接了一個項目,給甲方交接的時候,在它的電腦中運行出現了這個錯誤。
應用程序無法啟動,因為應用程序的並行配置不正確。有關詳細信息,請參閱應用程序事件日志,或使用命令行 sxstrace.exe 工具
當時沒有截圖,不過圖像的效果是這樣的:

因為他們是新裝的系統,給他們裝的是Win7 32bit的系統,其它什么都沒安裝,根據網上的說明,估計是兩個問題。
2.網上解決的一般方法
2.1 對於系統配置不正確
- 開始 - 運行(輸入services.msc)- 確定或回車,打開:服務(本地);
2. 我們在服務(本地)窗口找到:Windows Modules Installer服務,查看是否被禁用;
3. 如果Windows Modules Installer服務被禁用,我們必須把它更改為啟用 - 手動,重啟計算機,再安裝應用程序。

2.2 對於缺少Microsoft Visual C++ 20XX(運行庫)
網上是去百度上搜索對應的庫下載安裝。
我是直接用驅動精靈里面系統助手的系統組件進行自動修復。

3.問題依然存在
出現這樣錯誤是因為系統缺少某些運行庫,用sxstrace工具可以看究竟,用法:
-
管理員運行cmd ,輸入:
SxsTrace Trace -logfile:SxsTrace.etl,啟動跟蹤; -
執行目標程序,在彈出錯誤對話框后(不要關閉對話框);
-
回到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,下面是其內容:
=================
開始生成激活上下文。
輸入參數:
Flags = 0 ProcessorArchitecture = x86 CultureFallBacks = zh-CN;zh-Hans;zh;en-US;en ManifestPath = D:\nwpu\simulation_mapSendUDP\Test_SendPackUDP.exe AssemblyDirectory = D:\nwpu\simulation_mapSendUDP\ Application Config File = ----------------- 信息: 正在解析清單文件 D:\nwpu\simulation_mapSendUDP\Test_SendPackUDP.exe。 信息: 指令清單定義標識是 (null)。 信息: 參考: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" 信息: 正在解析參考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 信息: 正在解析 ProcessorArchitecture x86 的參考。 信息: 正在解析區域性 Neutral 的參考。 信息: 正在應用綁定策略。 信息: 未找到發布服務器策略。 信息: 未找到綁定策略重定向。 信息: 開始程序集探測。 信息: 未找到 WinSxS 中的程序集。 信息: 嘗試在 C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL 上探測指令清單。 信息: 嘗試在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT.DLL 上探測指令清單。 信息: 嘗試在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT.MANIFEST 上探測指令清單。 信息: 嘗試在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL 上探測指令清單。 信息: 嘗試在 D:\nwpu\simulation_mapSendUDP\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST 上探測指令清單。 信息: 未找到區域性 Neutral 的指令清單。 信息: 結束程序集探測。 錯誤: 無法解析參考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 錯誤: 生成激活上下文失敗。 結束生成激活上下文。
從中得到一些信息:
“錯誤: 無法解析參考 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卸載了,以后有機會在測測吧。
