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?
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?
Câu trả lời:
Gõ regsvr32 name.dll
vào Command Prompt (được thực thi ở chế độ nâng cao!) Và nhấn "Enter." Lưu ý rằng name.dll
phả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
.
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
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
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.
"
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.)
regsvr32
sẽ 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/...
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
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 DLL là 32 bit:
nếu DLL là 64 bit:
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.
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
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 ( -.dll
hoặ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 -.dll
hoặc -.ax
tệ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):
Create shortcut
;Properties
;Compatibility
tab;Run this program as administrator
;-.dll
hoặc của bạn -.ax
lê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ó.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
khỏi đường dẫn thư mục hệ thốngChạy tệp lô shotgun này, sẽ (theo thứ tự):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
chuyể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ó %nx1
hay %n1
không?
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
Và trong khi thực hiện việc này, nếu bạn nhận được mã lỗi 0x80040201, hãy thử giải pháp trong DllRegisterServer không thành công với mã lỗi 0x80040201 , nhưng hãy đảm bảo rằng, bạn mở dấu nhắc lệnh dưới dạng Run as Administrator .
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
Đây là cách tôi khắc phục sự cố này trên máy Win7 x64:
"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"
Hi vọng điêu nay co ich !
regsvr32
, một DLL phải xuất các chức năngDllRegisterServer
vàDllUnregisterServer
. Không có đăng ký phần lớn các tệp DLL mà bạn tạo.