win7下注册一个com失败,权限不够
生活随笔
收集整理的這篇文章主要介紹了
win7下注册一个com失败,权限不够
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在win7下,用vc2010建立了一個最簡單的ATL com,但是編譯成功了,注冊時卻失敗了,提示:
"warning MSB3075: 命令“regsvr32 /s "E:\Program\VC2010\testcom3\Debug\testcom3.dll"”已退出,代碼為 5。請驗證您是否有足夠的權限來運行此命令。"
很明顯:這是一個權限不足的問題。同樣的代碼放在win XP下,可能沒有任何問題,但是在win7下卻出現了這種問題。因為win7對權限的管理還是比較嚴的。
分析代碼,注冊dll的代碼就是:_AtlModule.DllRegisterServer(); 這個函數做的任務是將信息寫入注冊表,但由于權限的問題,寫不進去。
解決辦法:
在寫注冊表前先執行ATL::AtlSetPerUserRegistration(true); // 將應用程序的寫入點重定向到HKEY_CURRENT_USER
重新編譯,發現注冊成功了!
同理,為了實現反注冊(DllUnregisterServer)時也能執行成功,需要在執行?_AtlModule.DllUnregisterServer();前先執行ATL::AtlSetPerUserRegistration(true); 即
STDAPI DllUnregisterServer(void) {ATL::AtlSetPerUserRegistration(true);HRESULT hr = _AtlModule.DllUnregisterServer();return hr; }總結
以上是生活随笔為你收集整理的win7下注册一个com失败,权限不够的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 过虑数字类型后面的0
- 下一篇: oracle中备份package源码