欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Visual Basic調試COM+組件遇到的問題

系統 1774 0

Visual Basic 調試 COM+ 組件遇到的問題

Article last modified on 2002-1-20

--------------------------------------------------------

The information in this article applies to:

? ???? - Microsoft Visual Basic Enterprise Edition for Windows, versions 6.0(SP 5)

--------------------------------------------------------

?

現象

?

Visual Basic 創建的 COM 組件放置到 COM+ 中的某個應用下后,在某種情況下調試時, Visual Basic IDE 會彈出如下對話框:

"System Error &H80004015(-2147467243).運行單一線程時再次調用ConInitialize."?

重新產生本現象的步驟

?

Visual Basic 版本: 6.0(SP5)

* ????????? Visual Basic 創建一個 Active Dll Class Modules 的名字為 WrongServerID Project 名字為 Test

* ????????? Project 的設置均按缺省情況;

* ????????? 添加一個方法 Run ,隨便加幾句代碼;

* ????????? Make Test.Dll

* ????????? Test.Dll 放置到 COM+ 的一個應用中, COM+ 應用的標識設置有以下三種情況:

1

標識為“交互式用戶 --- 目前已登錄的用戶”!

這時 Visual Basic IDE 可以調試 Test.Dll

2

標識為當前登錄的用戶名!

Visual Basic IDE 可以調試 Test.Dll

3

標識的用戶不是當前登錄的用戶名!

這時調試 Test.Dll ,就會遇到 0x80004015 的錯誤對話框!

?

?

原因

              
                
                  
                    這個錯誤在《
                  
                
                
                  INFO: Translating Automation Errors for VB/VBA (Long)
                
              
              
                Q186063
              
              
                
                  》是這樣定義的:
                
                
                  
                    
                    
                  
                
              
            
              
                
                  -2147467243 (80004015)
                  
                    ??? 
                  
                  The class is configured to run as a security id different from the caller. 
          
                  
                  
                
              
            

?

這個定義顯然要比 VB IDE 報出的語焉不詳的“運行單一線程時嘗試再次調用 CoInitialize ”更讓人清楚明白!

?

首先,讓我們看一看 VB 是怎么做的:

VB IDE 運行一個 ActiveX Dll 時, IDE 將調用 CoRegisterClassObject()

CoRegisterClassObject() 將會察看要調用的進程 (COM Server) 的安全標識是否匹配這個 Class 注冊的安全標識。

對于設置為運行在“ Interactive User ”標識下的 Server CoRegisterClassObject() 將會動態地確認當前登錄的交互式用戶的標識,以完成這種比較。

但是對于設置為運行在不同于當前登錄用戶的另一個用戶標識下的 Server

RunningObjectTable::Register(ROTFLAGS_ALLOWANYCLIENT) 將會返回

CO_E_WRONG_SERVER_IDENTITY ,這樣是為了強制安全,阻止了惡意欺騙。 COM 不相信調用 CoRegisterClassObject() 的代碼,它只相信注冊表 ( 注冊表是一個安全的數據庫 )

于是 -2147467243 (80004015)的錯誤就出現了。

?

那么上面所說的 Class 注冊的安全標識在哪里查到呢??

我的 Test.WrongServerID CLSID {54BD886F-76CB-49E9-8515-5992B9F9CC50} ,所以在注冊表的

HKEY_CLASSES_ROOT\AppID\{54BD886F-76CB-49E9-8515-5992B9F9CC50} 下:

RunAs ”的值就是。它還可以為“ mydomain\myaccount ”、“ Interactive User ”等值。

?

但是 COM+ 應用的標識設置的改變,卻并沒有在這個鍵值上體現出來。所以如果把組件不放入到 COM+ 中,則 Class 注冊的安全標識應該依賴于這個“ RunAs ”鍵值。那么把組件放入到 COM+ 之后,看哪一個鍵值呢 ?

我猜想這已經存入到 COM+ 自己的數據庫了,而不再是注冊表。這個有待研究。

?

小結

當一個 client 試圖調用一個 COM Server ,需要在 client server 之間建立一個經過驗證的 COM Session 。這時 COM 需要檢查雙方的安全性。

Server 調用 CoRegisterClassObject() 注冊它的 Classes 。然后 COM 試圖假冒 client 來調用該 Server

對于我們這種情況, Visual Bsic IDE 用的是當前登錄用戶的標識,而這個標識是通不過 Server 端的驗證的。

?

參考文獻:

1. ?? PRB: System Error Message "&H80004015" Running ActiveX DLL in ID [Q228487]

2. ?? COM Security Frequently Asked Questions [Q158508]

3. ?? FIX: CoRegisterClassObject Fails with CO_E_WRONG_SERVER_IDENTITY [Q170364]

4. ?? INFO: COM Servers Activation and NT Windows Stations [Q169321]

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12659


Visual Basic調試COM+組件遇到的問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天色综网 | 成人看片 | 国产福利福利视频 | 久久国产美女 | 亚洲视频免费在线看 | 免费一级毛片在线观看 | 久久精品视频日本 | 杏美月av| www.9p234.com| 婷婷综合色 | 黄色av一区 | 99久久精约久久久久久清纯 | 日韩三级免费观看 | 国产精品久久久爽爽爽麻豆色哟哟 | 激情宗合网 | 国产精品免费在线播放 | 日日摸夜夜添夜夜添破第一 | 日韩精品一区二区三区 | 性欧美精品久久久久久久 | 欧美亚洲高清 | 日本精品不卡 | 免费大香伊蕉在人线国产 | 久久亚洲美女久久久久 | 欧美三极| 四虎影在线永久免费四虎地址8848aa | 双性精h调教灌尿打屁股的文案 | 欧美视频三区 | 91免费看 | 午夜剧场操一操 | 天天摸夜夜摸夜夜狠狠摸 | 日日狠狠的日日日日 | 一级做a爰性色毛片免费 | 日本黄页在线观看免费 | 五月天婷婷基地 | 哥斯拉大战金刚2在线观看免费完整版 | 视频一区二区在线观看 | 成人毛片视频在线观看 | 日韩精品成人a在线观看 | 大伊香蕉在线精品不卡视频 | k8久久久一区二区三区 | 欧美成人免费全网站大片 |