Làm cách nào để đăng ký tệp DLL trên Windows 7 64-bit?


101

Tôi đã cố gắng sử dụng mã sau:

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

Nhưng điều này không hiệu quả với tôi. Làm cách nào để đăng ký tệp DLL trên Windows 7 với bộ xử lý 64-bit?


Khi câu hỏi này được gắn thẻ "vb.net", tôi phải tự hỏi tại sao bạn đang cố gắng đăng ký một DLL mà bạn đã tạo trong VB.NET. Để được sử dụng với regsvr32, một DLL phải xuất các chức năng DllRegisterServerDllUnregisterServer. Không có đăng ký phần lớn các tệp DLL mà bạn tạo.
Cody Grey

12
Ý bạn là gì không hoạt động hoặc không hữu ích? Bạn có nhận được một thông báo lỗi? Nó nói gì?
Cody Grey

Câu trả lời:


68

regsvr32 name.dllvào Command Prompt (được thực thi ở chế độ nâng cao!) Và nhấn "Enter." Lưu ý rằng name.dllphải được thay thế bằng tên của DLL mà bạn muốn đăng ký. Ví dụ: nếu bạn muốn đăng ký iexplore.dll, hãy nhập regsvr32 iexplore.dll.


5
regsvr32 đường dẫn của tập tin .dll với tên tập tin và mở rộng và nhấn Enter
RK Sharma

202

Vâng, bạn không chỉ định đó là dll 32 hay 64 bit và bạn không bao gồm thông báo lỗi, nhưng tôi đoán rằng đó là vấn đề tương tự như được mô tả trong bài viết KB này: Thông báo lỗi khi bạn chạy Regsvr32.exe trên Windows 64-Bit

Trích dẫn từ bài báo đó:

Hiện tượng này xảy ra do tệp Regsvr32.exe trong thư mục System32 là phiên bản 64-bit. Khi bạn chạy Regsvr32 để đăng ký DLL, bạn đang sử dụng phiên bản 64-bit theo mặc định.

Giải pháp từ bài báo đó:

Để giải quyết vấn đề này, hãy chạy Regsvr32.exe từ thư mục% SystemRoot% \ Syswow64. Ví dụ: nhập các lệnh sau để đăng ký DLL: cd \windows\syswow64 regsvr32 c:\filename.dll


13
Tại sao đây không phải là câu trả lời được chọn?
Mike Devenney

5
Đây thực sự phải là câu trả lời chính xác. Tôi có thể hiểu rằng trong bài đăng ban đầu của anh ấy, cú pháp không chính xác nhưng Rajkumar nhận xét rằng anh ấy đã nhận được thông báo lỗi ngay cả khi sử dụng đúng cú pháp. Điều này cần hai bước để có câu trả lời chính xác cho ai đó đang tìm kiếm thay vì một. Đầu tiên cho câu trả lời được chọn là đúng, sau đó theo chuỗi nhận xét, kết thúc ở bài đăng này.
Rob

102

Nếu DLL là 32 bit:

Sao chép DLL sang C: \ Windows \ SysWoW64 \
Trong dấu nhắc lệnh nâng cao :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

nếu DLL là 64 bit:

Sao chép DLL sang C: \ Windows \ System32 \
Trong dấu nhắc lệnh nâng cao :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

Tôi biết nó có vẻ sai cách, nhưng đó là cách nó hoạt động. Xem:

http://support.microsoft.com/kb/249873
Trích dẫn: "Lưu ý Trên phiên bản 64-bit của hệ điều hành Windows, có hai phiên bản của tệp Regsv32.exe:
Phiên bản 64-bit là% systemroot% \ System32 \ regsvr32.exe.
Phiên bản 32-bit là% systemroot% \ SysWoW64 \ regsvr32.exe.
"


26
+1 cho "Tôi biết nó có vẻ không đúng, nhưng đó là cách nó hoạt động" với liên kết tới support.microsoft.com ... với liên kết thật khó tin.
Trevor Boyd Smith

6
"Trong cmd cao" là rất quan trọng !!
shindigo

4
Tôi không nghĩ rằng chúng ta phải sao chép nó vào thư mục system32 hoặc syswow64. Chỉ cần đăng ký tệp ở bất cứ đâu.
Nikos

30

Trên hệ thống x64, system32 dành cho 64 bit và syswow64 dành cho 32 bit (không phải ngược lại như đã nêu trong một câu trả lời khác). WOW (Windows trên Windows) là hệ thống con 32 bit chạy dưới hệ thống con 64 bit).

Đó là một mớ hỗn độn trong các thuật ngữ đặt tên, và chỉ gây nhầm lẫn, nhưng đó là cách của nó.

Lần nữa ...

syswow64 là 32 bit, KHÔNG PHẢI 64 bit.

system32 là 64 bit, KHÔNG PHẢI 32 bit.

Có một regsrv32 trong mỗi thư mục này. Một là 64 bit và còn lại là 32 bit. Nó cũng tương tự với odbcad32 và et al. (Nếu bạn muốn xem trình điều khiển ODBC 32-bit sẽ không hiển thị với odbcad32 mặc định trong system32 là 64-bit.)


1
Tại sao nó quan trọng? regsvr32sẽ chăm sóc về các chi tiết, về mặt lý thuyết nó sẽ phát hiện xem bạn đang đăng ký 32 bit hoặc 64 bit DLL: stackoverflow.com/questions/18935163/...
Sk8erPeter

8

Mở menu bắt đầu và nhập cmd vào hộp tìm kiếm Giữ Ctrl + Shift và nhấn Enter

Thao tác này sẽ chạy Command Prompt ở chế độ Quản trị viên.

Bây giờ gõ: regsvr32 MyComobject.dll


6

Cuối cùng tôi tìm thấy giải pháp chỉ cần chạy CMD với tư cách quản trị viên sau đó viết

cd \windows\syswow64

sau đó viết cái này

regsvr32 c:\filename.dll

Tôi hy vọng câu trả lời đó sẽ giúp bạn


Nếu bạn đã sao chép filename.dll vào thư mục syswow64 và bạn thay đổi thư mục làm việc thành syswow64 trong dấu nhắc lệnh, thì "c: \" trong "regsvr32 c: \ filename.dll" là không cần thiết. Tóm lại, "regsvr32 c: \ filename.dll" nên đọc "regsvr32 filename.dll"
Josh McKearin 19/113

6

Nếu DLL là 32 bit:

  1. Sao chép DLL sang C: \ Windows \ SysWoW64 \
  2. Trong cmd nâng cao:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namesll.dll

nếu DLL là 64 bit:

  1. Sao chép DLL sang C: \ Windows \ System32 \
  2. Trong cmd nâng cao:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namell.dll

6

Mọi thứ ở đây đã thất bại như một con đường sai lầm. Sau đó, tôi nhớ lại một thủ thuật từ những ngày Win95 cũ. Mở thư mục chương trình chứa .dll, mở C: / Windows / System32, cuộn xuống regsvr32 và kéo và thả dll từ thư mục chương trình vào rgsrver32. Bùm, xong rồi.


2
điều này hoạt động nhưng có thể có vấn đề nếu bạn cần chạy điều này với tư cách là quản trị viên.
workabyte

3

Biết thông báo lỗi sẽ có giá trị hơn. Nó có nghĩa là cung cấp thông tin, mặc dù nó không có ý nghĩa gì đối với bạn, nó đối với chúng tôi. Bị buộc phải đoán, tôi muốn nói rằng DLL là một bộ lọc DirectX 32-bit. Trong trường hợp đó, đây phải là quá trình hành động thích hợp:

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

Điều này phải được chạy tại dấu nhắc lệnh nâng cao để UAC không thể dừng truy cập sổ đăng ký được yêu cầu. Đặt thêm câu hỏi về điều này tại superuser.com


3

Tôi vừa thử nghiệm phương pháp cực kỳ đơn giản này và nó hoạt động hoàn hảo - nhưng tôi sử dụng tài khoản Quản trị viên tích hợp sẵn, vì vậy tôi không phải nhảy qua các vòng để có các đặc quyền nâng cao.

Tệp lô sau giúp người dùng không cần phải di chuyển tệp vào / ra khỏi các thư mục hệ thống. Nó cũng phụ thuộc vào Windows để áp dụng phiên bản thích hợp của Regsvr32.

HƯỚNG DẪN:

  • Trong thư mục có chứa ( -.dllhoặc -.ax) tệp thư viện bạn muốn đăng ký, hãy mở một tệp văn bản mới và dán vào MỘT trong các quy trình bên dưới:

    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
    
  • Lưu tệp văn bản mới của bạn dưới dạng tệp batch ( -.bat); sau đó chỉ cần kéo và thả tệp -.dllhoặc -.axtệp của bạn lên trên tệp hàng loạt.

  • Nếu UAC không cho bạn cơ hội chạy tệp loạt với tư cách Quản trị viên, bạn có thể cần nâng cấp đặc quyền theo cách thủ công (hướng dẫn dành cho Windows 7):

    1. Nhấp chuột phải vào tệp lô;
    2. Lựa chọn Create shortcut ;
    3. Nhấp chuột phải vào phím tắt;
    4. Lựa chọn Properties ;
    5. Nhấn vào Compatibility tab;
    6. Chọn hộp có nhãn Run this program as administrator ;
    7. Kéo và thả tệp -.dllhoặc của bạn -.axlên đầu phím tắt mới thay vì tệp hàng loạt.

Đó là nó . Tôi đã chọn COPY thay vì MOVE để ngăn chặn sự thất bại của bất kỳ (các) nỗ lực theo dõi nào liên quan đến UAC. Sau khi đăng ký thành công, bạn phải xóa ( -.dll hoặc ) tệp thư viện gốc -.ax.

Đừng lo lắng về các bản sao được tạo vào thư mục hệ thống ( C:\Windows\System32 hoặc C:\Windows\SysWOW64) bởi các lần chuyển trước - chúng sẽ bị ghi đè mỗi khi bạn chạy tệp loạt.

Trừ khi bạn chạy sai tệp hàng loạt , trong trường hợp đó, bạn có thể muốn xóa bản sao được tạo vào thư mục hệ thống sai ( C:\Windows\System32 hoặc C:\Windows\SysWOW64 ) trước khi chạy tệp hàng loạt thích hợp, ... hoặc ...

  • Giúp Windows chọn tệp thư viện phù hợp để đăng ký bằng cách xác định đầy đủ vị trí thư mục của nó.

    1. Từ tệp hàng loạt bên phải, sao chép đường dẫn thư mục hệ thống
      • Nếu 64-bit: C:\Windows\System32
      • Nếu 32-bit: C:\Windows\SysWOW64
    2. Dán nó vào dòng tiếp theo để nó đứng trước %nx1
      • Nếu 64-bit: regsvr32 "C:\Windows\System32\%nx1"
      • Nếu 32-bit: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Dán đường dẫn bên trong dấu ngoặc kép
        • Chèn dấu gạch chéo ngược để tách biệt %nx1khỏi đường dẫn thư mục hệ thống
      • hoặc ...

  • Chạy tệp lô shotgun này, sẽ (theo thứ tự):

    1. Thực hiện xóa các quy trình đăng ký bị hủy bỏ
      • Đảo ngược bất kỳ quá trình đăng ký nào được hoàn thành bởi tệp thư viện của bạn;
      • Xóa mọi bản sao của tệp thư viện của bạn đã được lưu vào một trong hai thư mục hệ thống;
      • Tạm dừng để cho phép bạn kết thúc tệp hàng loạt tại thời điểm này (và chạy tệp khác nếu bạn muốn).
    2. Cố gắng cài đặt 64-bit trên tệp thư viện của bạn
      • Sao chép tệp thư viện của bạn vào C:\Windows\System32;
      • Đăng ký tệp thư viện của bạn dưới dạng quy trình 64 bit;
      • Tạm dừng để cho phép bạn kết thúc tệp hàng loạt tại thời điểm này.
    3. Hoàn tác cài đặt 64-bit
      • Đảo ngược mọi đăng ký tệp thư viện của bạn dưới dạng quy trình 64-bit;
      • Xóa tệp thư viện của bạn khỏi C:\Windows\System32;
      • Tạm dừng để cho phép bạn kết thúc tệp hàng loạt tại thời điểm này (và chạy tệp khác nếu bạn muốn).
    4. Cố gắng cài đặt 32-bit trên tệp thư viện của bạn
      • Sao chép tệp thư viện của bạn vào C:\Windows\SystemWOW64
      • Đăng ký tệp thư viện của bạn dưới dạng quy trình 32 bit;
      • Tạm dừng để cho phép bạn kết thúc tệp hàng loạt tại thời điểm này.
    5. Xóa bản sao gốc, chưa đăng ký của tệp thư viện

Run as administratorchuyển sang màu xám khi tôi tạo lối tắt cho tệp dơi. Tôi đăng nhập với tư cách quản trị viên. Ngoài ra, nó có %nx1hay %n1không?
Jon Grah

3

Có một sự khác biệt trong Windows 7. Đăng nhập với tư cách Quản trị viên thì không cung cấp các quyền giống như khi chạy chương trình với tư cách Quản trị viên.

Vào Start - All Programs - Accesories. Nhấp chuột phải vào cửa sổ Command và chọn "Run as administrator" Bây giờ đăng ký dll bình thường qua: regsrvr32 xxx.dll



3

Bạn cần chạy cmd.exevàoc:\windows\system32\ by administrator

Lệnh: Đối với các tệp * .dll hủy đăng ký

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

Để đăng ký tệp * .dll

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

2

Một phần của sự nhầm lẫn liên quan đến regsvr32 là trên các cửa sổ 64-bit, tên và đường dẫn không thay đổi, nhưng bây giờ nó đăng ký các tệp DLL 64-bit. Regsvr32 32-bit tồn tại trong SysWOW64, một cái tên có vẻ như đại diện cho các ứng dụng 64-bit. Tuy nhiên, WOW64 trong tên đề cập đến Windows trên Windows 64, hoặc rõ ràng hơn là Windows 32 bit trên Windows 64 bit. Khi bạn nghĩ về nó theo cách này, cái tên vẫn có ý nghĩa mặc dù nó khó hiểu trong bối cảnh này.

Tôi không thể tìm thấy nguồn gốc của mình trên blog MSDN nhưng nó được tham chiếu trong bài viết Wikipedia này http://en.wikipedia.org/wiki/WoW64


1

Đây là cách tôi khắc phục sự cố này trên máy Win7 x64:

1 - thông báo lỗi:

"CoCreateInstance () không thành công. Hãy kiểm tra các mục đăng ký CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} của bạn và đảm bảo rằng bạn đã đăng nhập với tư cách quản trị viên"

2 - thủ tục sửa chữa:

  • Bắt đầu / gõ cmd / RightMouse Nhấp vào cmd.exe và chọn "Chạy với tư cách quản trị viên"
  • gõ: regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • khởi động lại Win 7 và hoạt động trở lại!

Hi vọng điêu nay co ich !

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.