近日在打開原來寫的一個網頁程序運行時,出現了Excel操作權限的問題,具體的說就是在代碼中調用下面這段與Excel操作有關的語句時,
Application curExcelApp = new ApplicationClass();
提示權限不足,具體的提示內容如下:
檢索 COM 類工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。 異常詳細信息: system.UnauthorizedAccessException: 檢索 COM 類工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005。 ASP.NET 未被授權訪問所請求的資源。請考慮授予 ASP.NET 請求標識訪問此資源的權限。ASP.NET 有一個在應用程序沒有模擬時使用的基進程標識(通常,在 IIS 5 上為 {MACHINE}ASPNET,在 IIS 6 上為網絡服務)。如果應用程序正在通過 <identity impersonate="true"/> 模擬,則標識將為匿名用戶(通常為 IUSR_MACHINENAME)或經過身份驗證的請求用戶。 要將 ASP.NET 訪問權限授予某個文件,請在資源管理器中右擊該文件,選擇“屬性”,然後選擇“安全”選項卡。單擊“添加”添加適當的用戶或組。突出顯示 ASP.NET 帳戶,選中所需訪問權限對應的框。 源錯誤:
行 533: //創建Excel信息
行 534: object missing = system.Reflection.Missing.Value;
行 535: Application curExcelApp = new ApplicationClass();
行 536: curExcelApp.Application.DisplayAlerts = false;
行 537: Workbook curWorkBook = curExcelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
原來碰到過這種情況,知道是由於Excel的DCom組件權限不足所引起的,所以按照原來的步驟進行設置,如下所示:
1:在服務器上安裝office的Excel軟件;
2:在"開始"->"運行"中輸入dcomcnfg.exe啟動"組件服務";
3:依次雙擊"組件服務"->"計算機"->"我的電腦"->"DCOM配置";
4:在"DCOM配置"中找到"Microsoft Excel 應用程序",在它上面點擊右鍵,然後點擊"屬性",彈出"Microsoft Excel 應用程序屬性"對話框;
5:點擊"標識"標簽,選擇"交互式用戶";
6:點擊"安全"標簽,在"啟動和激活權限"上點擊"自定義",然後點擊對應的"編輯"按鈕,在彈出的"安全性"對話框中填加一個"NETWORK SERVICE"用戶(注意要選擇本計算機名),並給它賦予"本地啟動"和"本地激活"權限。在XP系統和2000系統中添加ASPNET用戶;
7:依然是"安全"標簽,在"訪問權限"上點擊"自定義",然後點擊"編輯",在彈出的"安全性"對話框中也填加一個"NETWORK SERVICE"用戶,然後賦予"本地訪問"權限.