我正在運行Windows 7 Ultimate 64位。使用Windows服務進行數據執行保護
我有一個Windows服務(用C#編寫)調用由南非一家大型電信服務提供商(TELKOM)發佈的dll。該DLL被稱爲MPIEst.dll,我相信它是用C++編寫的。鏈接中的人(http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/a7e5aafc-bb52-42c3-a3e7-19cb4cfbf6d5/)有一樣的問題,我有。
經過一番研究,我發現DEP(數據執行保護)是由於錯誤「無法加載DLL'MPIest.dll':內存位置無效訪問(來自HRESULT的異常:0x800703E6)」。所以我想「好吧,這很簡單......讓我們關閉整個電腦的DEP,看看會發生什麼」。所以我這樣做,結果變得更加怪異...... Windows服務成功運行,沒有任何反應,但所有對DLL的調用都不做任何事情。
我知道這一點,因爲當我編寫使用DLL的正常C#控制檯應用程序時,DLL方法返回值並正常工作,但是當從Windows服務中運行時,DLL方法返回一個非零結果,表明出了點問題。問題是沒有說明返回代碼含義的文檔。
無論如何,底線是以某種方式關閉整個系統的DEP不會影響Windows服務。 有沒有人遇到過這個? Windows服務和控制檯應用程序調用完全相同的代碼並執行完全相同的操作,但控制檯應用程序正常工作,而Windows服務默默無聞,但DEP關閉整個系統。
在此先感謝。