2009-12-04 184 views
6

當試圖在的Win2008 Server中運行regasm:問題註冊DLL - 拒絕訪問

regasm "C:\Program Files\FooProg\Bar.dll" /tlb:"C:\Program Files\FooProg\Bar.tlb" 

我收到以下錯誤:

RegAsm : error RA0000 : An error occurred while saving the exported type library: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

這是什麼意思

+0

看起來你沒有權限將東西寫入全局程序集緩存。你是否以標準用戶身份運行?磁盤空間如何?以前的安裝等待完成? – Craig 2009-12-04 15:41:08

+0

根據我的經驗,如果你想開發一些在2008服務器上運行的東西,那麼在你開始節省時間/金錢/和頭痛之前,你應該放棄,因爲安全權限不在該操作系統的圖表上。 – Jrud 2009-12-04 15:47:29

+0

是的 - 我應該運行cmd.exe作爲Adminstrator。咄! – Vidar 2009-12-04 16:11:37

回答

9

您運行regasm的帳戶無權寫入C:\ Program Files \ FooProg \,這就是regasm無法寫入.tlb的原因。使用具有管理員權限的帳戶運行regasm。

3

帳戶您正在使用需要管理員權限。

1

由於無法刪除相應的.tlb文件,因此很可能出現此錯誤。兩個其他建議: 1.停止IIS並嘗試再次註冊: 2.停止IIS,從您的DLL文件所在的位置刪除.tlb文件,然後嘗試重新註冊。

11

由於無法刪除相應的.tlb文件,因此很可能會出現此錯誤。另外兩個建議:

  1. 停止IIS並再次嘗試註冊:
  2. 停止IIS,在任何地方你的DLL文件刪除的.tlb文件,然後嘗試重新註冊。
  3. 關閉所有IE/IIS /開發工具(他們可能會保持一些文件只讀狀態),然後嘗試註冊DLL
+0

關閉IDE解決了我的問題,謝謝! – StarCub 2011-02-21 00:37:46

+1

+1這幫我找到了問題。我意外地在tlbfile名稱後添加了一個「\」,並且它創建了一個與tlb文件同名的文件夾。刪除文件夾解決了問題。 – surfen 2012-10-07 13:23:50

+0

感謝您分享確認surfen。額外的文件夾肯定會使你的執行失敗。 – 2012-11-27 03:36:52

1

在我的情況都將.dll和.tlb文件進行只讀刪除ReadOnly檢查爲我工作,我也關閉了像使用它的過程(Visual Studio IDE)。

+0

+1我沒有刪除只准備在我的情況下,但只刪除.tlb文件,但翻轉只讀可能會做同樣的事情,因爲我已經用管理權限運行。 – 2012-01-15 01:51:15

0

首先我必須在regasm找到dll文件之前刪除我的dll路徑中的所有空格。

但是,當我試着在目標周圍引號時它總是起作用。

1

如果您沒有在/tlb參數中指定完整路徑,也可以得到此問題。它會嘗試寫入C:\windows\system32。即使您以管理員身份運行,默認情況下,您無權寫入該目錄。

解決方法只是提供/tlb參數中的完整路徑(對您有權訪問的目錄)。

1

由於某個進程掛鉤了要嘗試註冊或複製的.dll或.tlb文件,因此很可能出現錯誤。重新啓動您的機器,然後重試或刪除.tlb文件並重建它以確保您可以訪問它。

0

贏7(如果已經是管理員) - 您可以通過右鍵單擊並訪問屬性,安全選項卡,單擊編輯,檢查允許的權限完全控制。

1

我有一個流浪dllhost.exe進程。殺死它允許我刪除.tlb文件並重新註冊。其他方法(停止IIS,停止應用程序池,關閉所有IDE)不起作用。