1. 程式人生 > 其它 >C# Regasm元件註冊

C# Regasm元件註冊

功能:程式集註冊工具(Regasm.exe),讀取程式集中的元資料,並將所需的項新增到登錄檔中

使用REGASM.EXE註冊工具,註冊  E:\ClassLibrary1.dll 的COM元件

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm  /codebase E:\ClassLibrary1.dll

使用批處理命令來註冊程式

@echo off


set path = C:\Windows\Microsoft.NET\Framework\v2.0.50727\;%path%


RegAsm /codebase E:\ClassLibrary1.dll


pause

可以使用 /regfile 選項生成包含登錄檔項的 .reg 檔案,而不是直接對登錄檔進行更改。通過登錄檔編輯器工具 (Regedit.exe) 匯入 .reg 檔案,可以在計算機上更新登錄檔。請注意,.reg 檔案不包含任何可由使用者定義的註冊函式完成的登錄檔更新。注意,/regfile 選項只為託管類發出登錄檔項。此選項不為 TypeLibID 或 InterfaceID發出登錄檔項。

egsvr32.exe是windows自帶的activex註冊和反註冊工具

regsvr32的用法為:
"regsvr32 [/s] [/n][/u] dllname”。其中dllname為activex控制元件檔名,建議在安裝前拷貝到system資料夾下。

引數有如下意義:
/u——反註冊控制元件
/s——不管註冊成功與否,均不顯示提示框
/c——控制檯輸出
/i——跳過控制元件的選項進行安裝(與註冊不同)
/n——不註冊控制元件,此選項必須與/i選項一起使用

當 使用 Regsvr32.exe 時,它會嘗試載入該元件並呼叫它的 DLLSelfRegister 函式。如果此嘗試成功,Regsvr32.exe 會顯示一個指示成功的對話方塊。如果此嘗試失敗,Regsvr32.exe 會返回一條錯誤訊息,其中可能會包括一個 Win32 錯誤程式碼。

以下列表介紹了 RegSvr32 錯誤訊息和可能的原因。

Unrecognized flag:/invalid_flag
鍵入的標誌或開關組合無效(請參閱本文中的“Regsvr32.exe 的用法”一節)。
No DLL name specified.
未包括 .dll 檔名(請參閱本文中的“Regsvr32.exe 的用法”一節)。
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
Dllname不是.dll 或.ocx 檔案。例如,鍵入 regsvr32 wjview.exe 就會生成該錯誤訊息。

例 如,鍵入regsvr32 icwdial.dll 後就會返回該錯誤訊息,因為 Icwdial.dll 檔案不能自行註冊。如果您懷疑記憶體中有損壞的Dllname 版本,請嘗試重新啟動計算機,或重新提取該檔案的原始版本。如果您執行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 資源工具包 中的 Kill 或 Pview 工具。有關其他資訊,請單擊以檢視以下 Microsoft 知識庫文章:197155 如何終止孤立程序OleInitialize failed (or OleUninitialize failed).

Regsvr32 必須先初始化COM 庫,然後才能呼叫所需的 COM 庫函式並在關閉時撤消對該庫的初始化。

將 DLL 安裝到全域性程式集快取(GAC)

程式集的共享和版本控制

該元件可用於由一個以上的應用程式,可能需要不止一個版本的程式集。多個版本可以同時存在於 GAC 中。

安全性

GAC 放置在系統根中應用了多數的沙箱外安全特性。您不需要在多處放置它。

程式集查詢

在查詢本地資料夾之後在 GAC 中查詢程式碼庫資訊。

開始

建立一個強名稱金鑰對:

首先,我們需要建立一個強名稱金鑰檔案。 這將使用的命令格式為:sn –k <檔名與位置>。 下面是一個示例。 建立了一個包括公鑰與私鑰的金鑰對。

使用 Visual Studio 對程式集進行簽名

給程式集簽名非常簡單 - 你也可能使用較麻煩的程式集連結器,但那完全沒必要。右鍵點選解決方案資源管理器中的專案節點,選擇屬性。在“簽名”(Signing)的選項卡中勾選“為程式集簽名”(Sign the assembly)。在下面的下面列表中選擇您的金鑰檔案。在這個示例中,我已經將金鑰檔案複製到了與 ReportingUtilitites DLL 生成相同的 bin\debug 資料夾中。

安裝到 GAC

現在我們有了一個已簽名可安裝到 GAC 的程式集。 執行 Visual Studio 命令提示 (在 visual studio tools 中) 並寫下面的指令: gacutil –I <程式集名稱 >。 在本示例中我將當前命令提示資料夾定位到了 DLL 所在資料夾 - 您可以也這麼做或是在程式集名稱裡輸入完整路徑。

在 MSI 中安裝程式集到 GAC

在產品環境中,現實情況是,你沒有安裝 Visual Studio 環境。

不用擔心。 安裝一個 DLL 到 GAC 仍然很簡單 - 你只需要建立一個部署專案。

在 Visual Studio 中新增一個新的部署專案到您的解決方案中。

  • 選擇一個標準安裝程式 - 無嚮導。
  • 右鍵點選專案節點,選擇檢視,檔案系統。
  • 右鍵點選“目標計算機上的檔案系統”(File System on target machine) 選擇 “Global Assembly Cache 資料夾”(GAC)
  • 右鍵點選生成的 GAC 資料夾選擇“專案輸出”(Project Output)中的 Dll 專案下的主輸出(primary output)。 確保您在下拉列表中選擇了正確的專案!
  • 該專案也將增加.NET框架的啟動條件。 確保該版本設定的版本將是在目標機器上,因為它會預設為您的開發機器上的最新版本 (這可能是更高的)。

    更改版本:

    • 右鍵點選專案節點選擇檢視中的“啟動條件”(launch conditions)
    • 在啟動條件中選擇 .Net Framework
    • 選擇屬性面板。您可能需要重新選擇啟動條件,以突出顯示正確的屬性。它應該如下:

    現在你可以生成你的專案並複製檔案到您需要安裝 DLL 的環境中了。