欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 久久久久久黄 | 婷婷国产 | 欧美日韩国产一区二区三区 | 国产日韩欧美精品 | 午夜羞羞影院 | 国产成人高清视频免费播放 | 成人网18网站 | 自拍偷拍视频网站 | 亚洲五月 | 一级特黄特黄毛片欧美的 | 日本一区午夜爱爱 | 国产gav成人免费播放视频 | 欧美人与动物xx | 久久久国产精品网站 | 日日草夜夜操 | 99久久精品费精品国产一区二 | 国产高清在线精品一区二区三区 | 欧美又黄又嫩大片a级 | 日本黄色一级视频 | 一级一级 a爱片免费视频 | 亚洲国产日产韩国欧美综合 | 久草新在线| 国产女主播在线 | 看了让人下面流水的视频 | 日本久久精品视频 | 91av在线电影 | 亚洲成人一区二区三区 | 一级片亚洲 | 男人的天堂在线视频 | a在线观看网站 | 久久两性视频 | 免费黄色大全 | 国产精品国产三级国产播12软件 | 欧美一级电影在线播放 | 四虎欧美在线观看免费 | 色99视频| 久操国产视频 | 波多野结衣xxxx性精品 | 色狠狠成人综合色 | 日本亚洲天堂网 | 波多野一区二区 |