最近在做Windows Shell的擴展實現,需要用到regasm.exe注冊程序集,故做個記錄
程序集注冊工具讀取程序集中的元數據,並將所需的項添加到注冊表中。注冊表允許COM客戶程序以透明方式創建.NET Framework類。類一經注冊,任何COM客戶程序都可以使用它,就好像該類是一個CO類。類僅在安裝程序集時注冊一次。程序集中的類實例直到被實際注冊時,才能從COM中創建。
注冊格式
regasm assemblyFile [options]
assemblyFile表示要向COM注冊的程序集文件路徑
選項 | 說明 |
---|---|
/codebase | 在注冊表中創建一個Codebase項。codebase項指定未安裝到全局程序集緩存中的程序集的文件路徑。如果隨后要安裝正在注冊到全局程序集緩存中的程序集,則不應指定此選項。用/codebase選項指定的assemblyFile參數必須是具有強名稱的程序集。 |
/registered | 指定此工具將僅引用已經注冊的類型庫 |
/unregister或/u | 注銷在assemblyFile中找到的可創建類。 |
/?或/help | 顯示該工具的命令語法和選項 |
需要注意的一點是在32位系統上要使用C:\windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
在64位上要使用
C:\windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
切記
附加一個我使用的批處理:
注冊使用:
@echo off
rem 進入到當前目錄
cd /d %~dp0
%windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /register /codebase RegistryNamespaceExtension.dll
rem 重啟資源管理器
taskkill /f /im explorer.exe & start explorer.exe
pausee
注銷使用:
@echo off
cd /d %~dp0
%windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /unregister RegistryNamespaceExtension.dll
taskkill /f /im explorer.exe & start explorer.exe
pause