日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于COM类工厂80070005和8000401a错误分析及解决办法

發(fā)布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于COM类工厂80070005和8000401a错误分析及解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

檢索 COM 類工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件失敗,原因是出現(xiàn)以下錯誤: 8000401a 因為配置類型不正確,系統(tǒng)無法開始服務(wù)器進(jìn)程。請檢查用戶名和密碼。 (異常來自 HRESULT:80070005)

檢索 COM 類工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件失敗,原因是出現(xiàn)以下錯誤: 8000401a 因為配置類型不正確,系統(tǒng)無法開始服務(wù)器進(jìn)程。請檢查用戶名和密碼。 (異常來自 HRESULT:0x8000401A)

問題描述:最近做一個web應(yīng)用程序需要操作Excel文件,在開發(fā)環(huán)境下程序測試正常,部署到IIS后程序操作Excel文件,IIS報錯,錯誤出現(xiàn)在創(chuàng)建Excel進(jìn)程的語句,如下:

Application?myExcelApp =?new?ApplicationClass();?

IIS提示信息如下:

檢索?COM?類工廠中?CLSID?為?{00024500-0000-0000-C000-000000000046}?的組件時失敗,原因是出現(xiàn)以下錯誤: 80070005。

?

異常詳細(xì)信息:??ASP.NET?未被授權(quán)訪問所請求的資源。請考慮授予?ASP.NET?請求標(biāo)識訪問此資源的權(quán)限。ASP.NET?有一個在應(yīng)用程序沒有模擬時使用的基進(jìn)程標(biāo)識(通常,在?IIS 5?上為?{MACHINE}/ASPNET,在?IIS 6?上為網(wǎng)絡(luò)服務(wù))。如果應(yīng)用程序正在通過??模擬,則標(biāo)識將為匿名用戶(通常為IUSR_MACHINENAME)或經(jīng)過身份驗證的請求用戶。?

?

問題分析:

在異常詳細(xì)信息里提到“模擬”,“network??service用戶”和“匿名用戶”,那就首先分析一下這些概念含義。

(一)???Web.Config配置

1、身份模擬(identity impersonate),這是很關(guān)鍵的一句,表示web應(yīng)用將為每一個請求進(jìn)行客戶端模擬,就是使用一個指定的賬戶身份訪問web應(yīng)用。

在不進(jìn)行客戶端模擬設(shè)置時,asp.net程序調(diào)用excel組件時使用的是network service用戶(在xp和2000中,使用的是aspnet用戶)使用設(shè)置進(jìn)行客戶端模擬時,默認(rèn)使用的是IUSR_MACHINENAME用戶,但該用戶沒有調(diào)用excel組件的權(quán)限。設(shè)置客戶端模擬還可以使用指定的用戶,將會以此用戶的身份訪問web應(yīng)用,但是要注意的是:由于asp.net的限制,該用戶的密碼不能為空。如下所示:

<identity?impersonate="true"?userName="服務(wù)器上系統(tǒng)用戶名"?password="用戶密碼"/>

?

2、身份驗證(authentication),?通過??節(jié)可以配置?ASP.NET?使用的?安全身份驗證模式,以標(biāo)識傳入的用戶。Mode選擇Windows,表示使用Windows集成的身份驗證模式。

<authentication?mode="Windows"/>

?

?????????實際上以上兩處配置與IIS的“目錄安全性”配置相對應(yīng),若在IIS中已做配置后,Web.config里可不再設(shè)置,通常創(chuàng)建IIS虛擬目錄時,默認(rèn)會配置使用客戶端模擬,模擬身份是“匿名用戶”即IUSR_MACHINENAME(在xp和2000中,使用的是aspnet用戶)。如下圖所示:

?

(二)???Network Service系統(tǒng)用戶

在安裝IIS后,系統(tǒng)上會有三個值得我們關(guān)注的用戶,分別是aspnet、iusr_machinename、iwam_machinename,如下圖所示:

在IIS 5中,asp.net應(yīng)用程序通過ASPNET用戶訪問,在IIS 6/7中,ASPNET賬戶被替換成Network Service,asp.net?應(yīng)用程序需要以“Network Service”?進(jìn)程標(biāo)識運(yùn)行來訪問,這個進(jìn)程標(biāo)識對應(yīng)兩個賬戶:IUSR_MACHINENAME和IWAM_MACHINENAME,其作用見上圖。而其ASP.NET程序能訪問的資源都是受Network Service限制的,這個賬戶能訪問什么資源,ASP.NET程序才能訪問資源。

Network Service賬戶只擁有本機(jī)部分權(quán)限,它能夠以計算機(jī)的名義訪問網(wǎng)絡(luò)資源,還有認(rèn)證用戶有權(quán)限訪問的資源。

?

綜上所述,我們只用在IIS里使用“匿名用戶”即以“network service”進(jìn)程標(biāo)識就可以訪問web應(yīng)用,無需再配置web.config文件。但是無法創(chuàng)建Excel實例,說明network service進(jìn)程標(biāo)識的權(quán)限不夠,如何給他授權(quán)在服務(wù)器上創(chuàng)建Excel實例呢?

?

(三)??DCOM組件配置

在服務(wù)器上操作excel要調(diào)用com組件,因此對network service的授權(quán)需要配置excel應(yīng)用程序com組件。

1、?打開Excel應(yīng)用程序COM組件

方法:在"開始"->"運(yùn)行"中輸入dcomcnfg.exe啟動"組件服務(wù)";?依次雙擊"組件服務(wù)"->"計算機(jī)"->"我的電腦"->"DCOM配置";?在"DCOM配置"中找到"Microsoft Excel?應(yīng)用程序",在它上面點擊右鍵,然后點擊"屬性",彈出"Microsoft Excel?應(yīng)用程序?qū)傩?#34;對話框。如下圖所示:

?

2、?配置EXCEL相關(guān)COM組件

需要注意的是在筆者的服務(wù)器上Excel相關(guān)的com組件有2個,分別是:Microsoft Excel應(yīng)用程序和Microsoft office Excel 2007工作薄,必須同時對這兩個com組件做相同的配置,否則仍然會出現(xiàn)無法創(chuàng)建Excel實例的現(xiàn)象。

配置方法:

“常規(guī)”選項卡中“身份驗證級別”選擇“默認(rèn)”;

“安全”選項卡中,啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇“自定義”,添加“network service”用戶并賦予最大權(quán)限。

“標(biāo)識”選項卡中,選擇“啟動用戶”,最后點擊確認(rèn)。

如下圖所示:

?

經(jīng)過這樣配置以后,web應(yīng)用能夠成功訪問,Excel實例也能夠正常創(chuàng)建,COM類工廠錯誤80070005成功解決

這里我做了一個實驗,若“標(biāo)識”中選擇的是“交互式用戶”,則web應(yīng)用能夠成功訪問,但不能創(chuàng)建Excel實例,此時COM類工廠報告另外一個錯誤8000401a,如下圖所示:

??????????????這里有必要說一下“交互式用戶”與“啟動用戶”的區(qū)別:

交互式用戶

(The interactive user)

這是推薦的選項,?以當(dāng)前登錄到系統(tǒng)的用戶確定對象的身份(當(dāng)前必須有用戶登錄到系統(tǒng),?如果用戶注銷那么對象也會被銷毀)

啟動用戶

(The launching user)

以調(diào)用的客戶端的用戶確定對象的身份,?一個缺點就是這個對象不能再進(jìn)行遠(yuǎn)程調(diào)用

?

??????????????為什么選擇“交互式用戶”會出現(xiàn)8000401a錯誤呢??原因是使用的身份不對,因為此時我使用administrator登錄服務(wù)器,所以交互式用戶就是administrator,如果選擇的是“啟動用戶”,將以調(diào)用的客戶端的用戶確定對象身份,客戶端所使用的是“匿名賬戶IUSR_MACHINENAME”,調(diào)用它的是network service進(jìn)程標(biāo)識。我們在前面配置DCOM時已經(jīng)賦予network service相應(yīng)權(quán)限,但沒有給administrator授權(quán),那是不是給administrator授權(quán)后選擇交互式用戶就可以創(chuàng)建excel實例了呢?

??????????????應(yīng)此,我按這個思路做了五組實驗:

【試驗一】

DCOM設(shè)置使用“交互式用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入administrator用戶(因為當(dāng)前使用的登錄用戶是administrator)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置

實驗結(jié)果:能正常訪問web應(yīng)用,但不能操作excel,報?COM?類工廠錯誤代碼?8000401a

?

【實驗二】

DCOM設(shè)置使用“交互式用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入administrator用戶(因為當(dāng)前使用的登錄用戶是administrator)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用administrator身份模擬

實驗結(jié)果:能正常訪問web應(yīng)用,但不能操作excel,報?COM?類工廠錯誤代碼?8000401a

?

【實驗三】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入administrator用戶(因為當(dāng)前使用的登錄用戶是administrator)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用administrator身份模擬

實驗結(jié)果:能正常訪問web應(yīng)用,能正常創(chuàng)建excel實例

?

【實驗四】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入administrator用戶(因為當(dāng)前使用的登錄用戶是administrator)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用IUSR_MACHINENAME身份模擬

實驗結(jié)果:能正常訪問web應(yīng)用,但不能操作excel,報?COM?類工廠錯誤代碼?8000401a

?

【實驗五】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入administrator用戶(因為當(dāng)前使用的登錄用戶是administrator)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中不使用身份模擬

實驗結(jié)果:不能正常訪問web應(yīng)用,也不能操作excel

?

?

上面五個實驗說明:在web.config中設(shè)置“身份模擬”只對DCOM中的?“啟動用戶”才有效,且欲操作Excel還必須在DCOM中賦予“身份模擬”的用戶最大權(quán)限。

為求徹底弄清楚問題的本質(zhì),我又做了幾組實驗:

【試驗一】

DCOM設(shè)置使用“交互式用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇“默認(rèn)”,IIS目錄安全性中按默認(rèn)設(shè)置,web.config文件中設(shè)置使用IUSR_MACHINENAME身份模擬

實驗結(jié)果:不能正常訪問web應(yīng)用,也不能操作excel

?

【試驗二】

DCOM設(shè)置使用“交互式用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入network service用戶(此時已刪除administrator用戶)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,web.config文件中設(shè)置使用IUSR_MACHINENAME身份模擬

實驗結(jié)果:不能正常訪問web應(yīng)用,也不能操作excel

?

【試驗三】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇“默認(rèn)”,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用IUSR_MACHINENAME身份模擬

實驗結(jié)果:不能正常訪問web應(yīng)用,也不能操作excel

?

【試驗四】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入network service用戶(此時已刪除administrator用戶)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,?web.config文件不使用身份模擬配置

實驗結(jié)果:能正常訪問web應(yīng)用,能正常創(chuàng)建excel實例

?

【試驗五】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”、“訪問權(quán)限”和“配置權(quán)限”全部選擇自定義,并且都加入network service用戶(此時已刪除administrator用戶)并賦予最大權(quán)限,IIS目錄安全性中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用身份模擬,形式<</span>identity?impersonate="true"?/>或者<</span>identityimpersonate="true"?userName="IUSR_ZZUDEV01-VM2"?password="密碼"/>

實驗結(jié)果:能正常訪問web應(yīng)用,但訪問excel文件被拒絕

?

【試驗六】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,?“訪問權(quán)限”選擇自定義并加入network service用戶并賦予最大權(quán)限,?“配置權(quán)限”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,IIS的“目錄安全性”中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用身份模擬,形式<</span>identity?impersonate="true"?/>或者<</span>identity?impersonate="true"?userName="IUSR_ZZUDEV01-VM2"?password="密碼"/>

實驗結(jié)果:能正常訪問web應(yīng)用,但訪問excel文件被拒絕

?

【試驗七】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,?“訪問權(quán)限”中選擇“使用默認(rèn)值”,即兩個用戶都不加,?“配置權(quán)限”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,?IIS的“目錄安全性”中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用身份模擬,形式<</span>identity?impersonate="true"?/>或者<</span>identityimpersonate="true"?userName="IUSR_ZZUDEV01-VM2"?password="密碼"/>

實驗結(jié)果:能正常訪問web應(yīng)用,也能訪問excel文件,但無法創(chuàng)建excel實例,報com類工廠錯80070005

?

【試驗八】

DCOM設(shè)置使用“啟動用戶”后,身份驗證級別選擇“默認(rèn)”,安全選項卡中“啟動和激活”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,?“訪問權(quán)限”中選擇“使用默認(rèn)值”,即兩個用戶都不加,?“配置權(quán)限”中選擇自定義并加入administrator用戶和network service用戶并賦予最大權(quán)限,?IIS的“目錄安全性”中按默認(rèn)設(shè)置,但web.config文件中設(shè)置使用administrator身份模擬,即<</span>identity?impersonate="true"userName="administrator"?password="密碼"/>

實驗結(jié)果:能正常訪問web應(yīng)用,能訪問excel文件,能正常創(chuàng)建excel實例

?

?

經(jīng)過以上又進(jìn)行的八組實驗說明,在IIS上部署操作Excel的web應(yīng)用,需要涉及3方面的權(quán)限:第一個是訪問web應(yīng)用的權(quán)限,第二個是訪問excel的權(quán)限,第三個是操作excel的權(quán)限。

使用“身份模擬”僅能達(dá)到訪問web應(yīng)用的效果,還不能具有第二、第三的權(quán)限,要訪問、操作Excel必須配置DCOM組件,并選擇使用“啟動用戶”。IIS 6默認(rèn)使用network service進(jìn)程標(biāo)識去調(diào)用默認(rèn)的“匿名賬戶IUSR_MACHINENAME”來用訪問web應(yīng)用,此時操作Excel的“啟動用戶”應(yīng)該是network service進(jìn)程標(biāo)識,但注意不能將其具體到IUSR_MACHINENAME和IWAM_MACHINENAME用戶,通過實驗六可以也看出,在DCOM中的“啟動和激活”與“訪問權(quán)限”均配置添加network service用戶,web.config文件中使用具體的IUSR_MACHINENAME身份模擬訪問Excel文件被拒絕,說明默認(rèn)匿名賬戶只有訪問web應(yīng)用的權(quán)限,而不具有訪問Excel和操作Excel的權(quán)限。

訪問web應(yīng)用,可以使用任何身份,IIS 6默認(rèn)使用?IUSR_MACHINENAME用戶,當(dāng)然也可以在web.config文件中或者IIS 6的“目錄安全性”中設(shè)置其他“身份模擬”。IUSR_MACHINENAME用戶不具有訪問Excel和操作Excel的權(quán)限,而只有Network Service具有訪問和操作Excel的權(quán)限。當(dāng)DCOM中不配置“訪問權(quán)限”時,web.config中配置的“身份模擬”就充當(dāng)兩種角色,一種是訪問web應(yīng)用的角色,另一種是訪問Excel的角色,若在DCOM中給“身份模擬”的用戶授予“啟動和激活”的權(quán)限,則該用戶就具有了第三種角色,操作Excel。

最后,在補(bǔ)充一點:IIS的“目錄安全性”web.config文件的“identity impersonate進(jìn)行“身份模擬”時優(yōu)先級的問題

根據(jù)實驗個人判斷,web.config的“身份模擬”優(yōu)先級較高,但I(xiàn)IS“目錄安全性”中的身份模擬為必有項(可根據(jù)情況選擇使用“匿名用戶訪問”或者“經(jīng)身份驗證的用戶訪問”)。當(dāng)兩者同時設(shè)置了不同的“身份模擬”時,將以web.config中的“身份模擬”訪問web應(yīng)用。

?

網(wǎng)上參考資料:

1、?什么是?Network Service?http://homepage.yesky.com/73/2656073.shtml

2、?請教IUSR_MachineName與NetworkService/ASPNET?兩個賬戶之間的關(guān)系

http://topic.csdn.net/u/20100927/18/bc789782-3825-4a64-af0b-decbb479174e.html

3、asp操作excel權(quán)限不足的問題?http://www.wacxy.com/show.asp?id=1159

轉(zhuǎn)載于:https://www.cnblogs.com/jack-Star/p/4272264.html

總結(jié)

以上是生活随笔為你收集整理的关于COM类工厂80070005和8000401a错误分析及解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。