2011-02-04 180 views
85

我曾嘗試使用下面的代碼:如何在Windows 7 64位上註冊DLL文件?

cd c:\windows\system32 
regsvr32.exe dllname.ax 

但是這不是爲我工作。如何在Windows上使用64位處理器註冊DLL文件?

+0

看到這個問題被標記爲「vb.net」,我不得不想知道爲什麼你要註冊一個你在VB.NET中創建的DLL。要與`regsvr32`一起使用,DLL必須導出函數`DllRegisterServer`和`DllUnregisterServer`。根本沒有註冊絕大多數您創建的DLL。 – 2011-02-03 11:41:19

+12

你的意思是什麼不起作用或沒有用?你有錯誤信息嗎?它說什麼? – 2011-02-04 12:08:52

回答

59

regsvr32 name.dll類型到命令提示符(在升高的模式下執行!)並按下「Enter」。請注意,name.dll應替換爲您要註冊的DLL的名稱。例如,如果您想註冊iexplore.dll,請鍵入regsvr32 iexplore.dll

+1

我用同樣的東西,然後它也給出錯誤信息 – 2011-02-04 12:07:32

+12

請記住在提升模式下運行命令提示符。 – Puneet 2014-11-05 05:14:43

+5

`regsvr32` **帶有文件名和擴展名的.dll文件的路徑**,然後按ENTER鍵 – 2015-02-10 10:34:45

165

嘛,你不指定,如果它是一個32位或64位的DLL,你不包含錯誤信息,但我想這是因爲這知識庫文章中所描述的相同的問題:Error Message When You Run Regsvr32.exe on 64-Bit Windows

那篇文章

報價:

此行爲發生在System32文件夾 Regsvr32.exe文件是一個64位版本。當您運行Regsvr32來註冊一個DLL時,默認情況下您使用的是64位版本。那篇文章

解決方案:

要解決此問題,從%SystemRoot%\ SYSWOW64 文件夾運行Regsvr32.exe。例如,鍵入以下命令註冊DLL: cd \windows\syswow64regsvr32 c:\filename.dll

+12

爲什麼這不是所選的答案? – 2014-04-10 19:40:43

+5

這確實應該是正確的答案。我可以理解,在他原來的文章中,語法是不正確的,但是Rajkumar評論說他即使在使用正確的語法時也收到錯誤消息。 這需要兩個步驟才能找到正確的答案,而不是一個人搜索。首先選擇正確的答案,然後按照評論鏈,結束這篇文章。 – Rob 2014-08-21 15:28:17

+1

運行字符串中的小問題。如果你想從運行窗口運行,應該是「c:\ windows \ syswow64 regsvr32 c:\ filename.dll」。 – Hightower 2014-10-31 10:38:24

2

知道錯誤信息將是相當寶貴的。它是爲了提供信息,儘管它對我們沒有任何意義。被迫猜測,我會說這個DLL是一個32位的DirectX過濾器。在這種情況下,這應該是行動的正確的做法:

cd c:\windows\syswow64 
move ..\system32\dllname.ax . 
regsvr32.exe dllname.ax 

這必須在提升的命令提示符下運行,使UAC不能停止的需要的註冊表訪問。問這個問題了,在superuser.com

5

如果DLL是32位:

  1. 複製DLL到C:\ WINDOWS \ SYSWOW64 \
  2. 在提升的cmd中:%windir%\ Syswow64資料\ regsvr32.exe的%WINDIR%\ SYSWOW64 \ namedll.dll

如果DLL是64位:

  1. 複製DLL到C:\ WINDOWS \ SYSTEM32 \
  2. 在提升的cmd中:%windir%\ System32 \ regsvr32.exe%windir%\ System32 \ namedll。dll的
4

最後我找到了解決辦法只是運行CMD以管理員身份,然後寫

cd \windows\syswow64 

然後寫這

regsvr32 c:\filename.dll 

我希望這個問題的答案將幫助您

28

在x64系統,system32用於64位,syswow64用於32位(不像其他答案中所述的那樣)。 WOW(Windows上的Windows)是在64位子系統下運行的32位子系統)。

這是一個混亂的命名術語,只會造成混淆,但事實就是這樣。

再次...

syswow64是32位,不是64位。

system32是64位,不是32位。

這些目錄中都有一個regsrv32。一個是64位,另一個是32位。 這與odbcad32等人的交易相同。 (如果你想看到32位ODBC驅動程序,它將不會在64位的system32中顯示默認odbcad32)。

7

打開開始菜單並在搜索框中輸入cmd按住Ctrl + Shift和按回車鍵

這以管理員模式運行命令提示符。

現在鍵入:regsvr32 MyComobject.dll

95

如果DLL是位:

複製DLL到C:\的Windows \ SYSWOW64 \
升高命令提示:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

如果該DLL是位:

複製DLL到C:\ WINDOWS \ SYSTEM32 \
升高命令提示符:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

我知道這似乎南轅北轍,但這是它的工作方式。請參閱:

http://support.microsoft.com/kb/249873
引用:「注意在Windows操作系統的64位版本,還有Regsv32.exe文件的兩個版本:
的64位版本是%SYSTEMROOT%\ System32 \ regsvr32.exe
32位版本是%systemroot%\ SysWoW64 \ regsvr32.exe。

2

我剛剛測試了這個非常簡單的方法和它完美的作品 - 但我用內置的Administrator帳戶,所以我不必赴湯蹈火爲提升權限

以下批處理文件減輕了需要輸入/輸出系統文件夾中的文件移動用戶也離開它到Windows應用的Regsvr32正確版本

說明:。

  • 在包含庫(-.dll-.ax)文件的文件夾,你想註冊,打開一個新的文本文件,並粘貼在下面的程序之一:

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS 
    copy %1 C:\Windows\System32 
    regsvr32 "%nx1" 
    echo END BATCH FILE 
    pause 
    

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS 
    copy %1 C:\Windows\SysWOW64 
    regsvr32 "%nx1" 
    echo END BATCH FILE 
    pause 
    
  • 將您的新文本文件保存爲一批(-.bat)文件;然後只需將您的-.dll-.ax文件拖放到批處理文件的頂部。

  • 如果UAC沒有給你運行該批處理文件作爲管理員的機會,你可能需要手動提升權限(說明適用於Windows 7):

    1. 上一批右擊文件;
    2. 選擇Create shortcut;
    3. 右鍵單擊該快捷方式;
    4. 選擇Properties;
    5. 單擊Compatibility選項卡;
    6. 選中標有Run this program as administrator的方框;
    7. 將您的-.dll-.ax文件拖放到新快捷方式而不是批處理文件的頂部。

就是這樣。我選擇了COPY而不是MOVE以防止任何與UAC相關的後續嘗試失敗。成功註冊後應刪除原始庫(-.dll-.ax)文件。

不要擔心到系統文件夾(C:\Windows\System32C:\Windows\SysWOW64)由以前的傳球製造有關副本 - 他們將在每次運行批處理文件時被覆蓋。

除非你跑錯了批處理文件,在這種情況下,你可能會想運行適當的批處理文件之前刪除了錯誤的系統文件夾(C:\Windows\System32C:\Windows\SysWOW64複印一份。 ..或...

  • 幫助窗口要選擇合適的庫文件被完全合格的目錄位置進行註冊。

    1. 從右側批處理文件複製系統文件夾路徑
      • 如果64位:C:\Windows\System32
      • 如果32位:C:\Windows\SysWOW64
    2. 粘貼它的下一行,使得其優先於%nx1
      • 如果是64位:regsvr32 "C:\Windows\System32\%nx1"
      • 如果32位:引號內regsvr32 "C:\Windows\SysWOW64\%nx1"
        • 粘貼路徑
        • 插入反斜槓從系統文件夾路徑分離%nx1
      • ...

  • 運行這個霰彈槍批處理文件,whi將CH(按順序):

    1. 執行中止登記處理清理
      • 逆向任何註冊過程中你的庫文件完成;
      • 刪除已保存到系統文件夾的任何庫文件副本;
      • 暫停以允許您在此時終止批處理文件(如果需要,可以運行另一個文件)。在你的庫文件
    2. 嘗試64位安裝
      • 你的庫文件複製到C:\Windows\System32;
      • 將您的庫文件註冊爲64位進程;
      • 暫停以允許您在此時終止批處理文件。
    3. 撤消64位安裝
      • 逆向媒體庫文件作爲一個64位的過程中的任何註冊;
      • C:\Windows\System32中刪除您的庫文件;
      • 暫停以允許您在此時終止批處理文件(如果需要,可以運行另一個文件)。在你的庫文件
    4. 嘗試32位安裝
      • 你的庫文件複製到C:\Windows\SystemWOW64
      • 註冊您的庫文件作爲32位進程;
      • 暫停以允許您在此時終止批處理文件。
    5. 刪除庫文件
2

的原創,未經註冊的副本有一個在Windows 7中的不同登錄爲管理員並沒有相同的權限運行一個程序作爲管理員的時候。

轉到開始 - 所有程序 - 配件。 右鍵單擊命令窗口,選擇「以管理員身份運行」 現在通過正常註冊的dll:regsrvr32 xxx.dll

4

這裏的一切都是錯誤的路徑失敗。然後我想起了Win95的舊日子裏的一招。打開.dll所在的程序文件夾,打開C:/ Windows/System32,向下滾動到regsvr32,並將程序文件夾中的dll拖放到rgsrver32上。熱潮,完成。

1

有關regsvr32的混淆部分是在64位窗口上名稱和路徑沒有改變,但它現在註冊了64位DLL。 SysWOW64中存在32位regsvr32,這個名稱似乎代表64位應用程序。但名稱中的WOW64指的是Windows 64上的Windows,或者更多的Windows 64位上的Windows 32位。當你這樣想起這個名字時,即使它在這種情況下令人困惑,這個名字也是有道理的。

我找不到我原來的源上的MSDN博客但這個維基百科文章http://en.wikipedia.org/wiki/WoW64

2

你需要運行cmd.exec:\windows\system32\ by administrator

命令中引用: 對於註銷 * .dll文件

regsvr32.exe /u C:\folder\folder\name.dll

註冊 *。dll文件

regsvr32.exe C:\folder\folder\name.dll 
0

這裏是我固定一個Win7的X64機器上這個問題:

1 - 錯誤信息:

「的CoCreateInstance()失敗 Plkease檢查您的註冊表項 CLSID {F088EA74 -2E87-11D3-B1F3-00C0F03C37D3},並確保您登錄作爲管理員」

2 - 修復程序:

  • 開始/鍵入cmd/RightMouseClick上的cmd.exe並選擇 「以管理員身份運行」
  • 輸入:REGSVR32 /s的C:\ Program Files文件\歐特克\ 3ds Max的設計2015年\ ATL.DLL REGSVR32/S C:\ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • 重新啓動Win 7並重新開始業務!

希望這有助於!

相關問題