Windows

regsvr32 有什麼作用?

  • March 2, 2017

要使用 . 在 Windows 伺服器上註冊 DLL 文件regsvr32,您首先需要將文件移動到您的system32文件夾,還是在您呼叫regsvr32命令後實際上自動完成?

如果我只是將一個dll文件放在我的桌面上並在那裡註冊,我可以在註冊後將其刪除嗎?刪除後會發生什麼?

換句話說,regsvr 實際上是如何工作的?

除了@Matthew Wetmore 的正確答案之外,通常發生的事情是它在該 dll 中註冊了所有 COM 組件。

具體來說,它會在 Windows 系統資料庫中創建兩個鍵(+子鍵)。

例如考慮一個 dll: dao360.dll,它裡面有多個 COM 對象。對於每個第一個鍵是這樣的:

HKLM\SOFTWARE\Classes\DAO.TableDef.36

對於 DAO 表定義對象,鍵的名稱是程序員將在其程式碼中引用的 COM 對象的 ProgID。

鍵下通常是具有預設值的單個鍵:

HKLM\SOFTWARE\Classes\DAO.TableDef.36\CLSID

在這種情況下:

{00000103-0000-0010-8000-00AA006D2EA4}

這是 COM 對象的 Class ID 或 CLSID,它告訴我們第二個鍵的位置:

HKLM\SOFTWARE\Classes\CLSID{00000103-0000-0010-8000-00AA006D2EA4}

此鍵及其子鍵和值具有有關 COM 對象的附加資訊。

需要注意的一個值是以下預設值:

HKLM\SOFTWARE\Classes\Wow6432Node\CLSID{00000103-0000-0010-8000-00AA006D2EA4}\InprocServer32

它具有承載 COM 對象的 exe/dll 的文件路徑,在我們的範例中:

%CommonProgramFiles%\Microsoft Shared\DAO\dao360.dll

這是使用 regsvr32.exe 註冊此 COM 對象時的正確文件路徑。如果您手動移動文件,COM 對象將不再工作,因為此系統資料庫值現在引用了一個失去的文件。

因此,在 DLL 上使用 regsvr32.exe 之前,請將其移動到其最終位置,並且在註冊 DLL 後不要移動它。

引用自:https://serverfault.com/questions/835433