痛苦的CryptoAPI
最近嘗試使用微軟的CryptoAPI,但是飽受挫折。首先是開發時,因為CryptoAPI並非VC++的標準Library,所以必須有Platform SDK 才行,還好在VS2005中有包含此SDK,是位於C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\目錄中。而且要 PlatformSDK\nclude 與 PlatformSDK\lib 的位置均一致最上方才行。接下來為了網頁元件使用,所以先做了一個DLL給VB元件使用,測試時OK,但是實際包在CAB供使用者下載後,就發生無法找到該DLL的錯誤訊息。後來想可能是CAB的限制吧。所以就想將原DLL改包成ATL元件。結果在Compile時出現 {Linking... uuid.lib(cguid_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module Error executing link.exe }錯誤,後來再將 PlatformSDK\nclude 與 PlatformSDK\lib 移至一般 include 與 Lib 之下,結果就 OK了。然後將元件放到 Server 上使用,結果一直出現 0x80090005 的錯誤,我查詢 CryptoAPI 的錯誤碼,發現是 NTE_BAD_DATA 的意思。後來把元件由元件服務移出,然後用 regsvr32 註冊,結果可以正運作。花了一個下午測試,結果都一樣。最後只好求救微軟工程師,結果他說此錯誤碼有另一個意思,代表權限的問題。他建議我改用指定使用者的方式來啟動元件,並且該使用者需有較大的權限。後來依他的方法設定後,果然就可以正常運作了。真是個痛苦的經驗。
0 Comments:
Post a Comment
<< Home