欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 欧美人成在线视频 | 免费看一级毛片 | 亚洲国产精品欧美综合 | 国产精品视频第一区二区三区 | 亚洲精品一区henhen色 | 日日视频 | 天干夜天天夜天干天国产电影 | 国产欧美日韩精品一区 | 国产欧美一区二区精品久久久 | 亚洲精品一区二区三区福利 | 五月天激情综合网 | 国产精品成人免费视频不卡 | 波多野结衣亚洲一区 | 拍拍拍无遮挡高清视频在线网站 | 欧美日韩精选 | 特级毛片免费观看视频 | 精品免费国产一区二区三区 | 午夜福利国产在线观看1 | 天堂成人| 久久99综合国产精品亚洲首页 | 丁香六月综合网 | 色噜噜色噜噜天天拍一拍 | 精品一区二区三区在线观看l | 欧美性色黄大片www 成人免费播放视频777777 | 亚洲成人在线免费视频 | 日本在线亚州精品视频在线 | 欧美极品一区二区 | 91短视频app下载安装无限看丝瓜山东座 | 91精品啪在线观看国产91九色 | 91视频h| 男女在线无遮挡毛片免费 | 国产精品视频在线播放 | 美女露尿口视频 | 久久在线中文字幕 | 欧美综合自拍亚洲综合网 | 日本黄色三级网站 | 久久综合一区 | 色综合天天色 | 天天干天天操天天爽 | 国产在线精品一区二区夜色 | 久久一日本道色综合久久 |