同事報案,某支排程作業主控台應用程式(Console Application)忽然無法執行,持續出現:

The system cannot execute the specified program.
系統無法執行指定的程式

爬文發現此訊息大多與缺少VC++ DLL有關,但這是支.NET程式,加上原本可以執行,必要DLL忽然消失的可能不高,推測應另有原因。

試著直接由檔案總管點選exe執行,蒐集更詳細的訊息。登楞! 凶手的背影出現了~~

訊息指出是config檔有問題,同事此時也出來補刀--"的確是修改過config後才壞的"。(身為報案民眾,一開始忽略重要線索也是很合理滴... [摔滑鼠])

檢視mdbsync.exe.config(如下示意),其中註解是後來加的,試著移除註解程式就能執行。所以問題出在該行註解,但以XML格式來說,"<!-- 註解 -->"看來合法無誤,為何變成把config搞爛的毒藥? 有人看出端倪了嗎?

注意一下Notepad++的狀態列,ANSI!! ANSI!! ANSI!!

結論: 在UTF-8 XML中寫入中文並存成BIG5會導致Console Application config壞掉,而在Windows 2003 Command視窗執行時則會傳回"The system cannot execute the specified program."錯誤。

PS: 發現在本機Window 2008 R2測試傳回的錯誤訊息不同: The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail. 看起來比Windows 2003的明確很多。


Comments

Be the first to post a comment

Post a comment