Câu trả lời:
Tôi đã tìm thấy liên kết này: Làm thế nào tôi có thể biết liệu DLL đã được đăng ký chưa? :
Cho rằng đăng ký DLL có thể bao gồm các hoạt động tùy ý, không có cách nào chung để xác định liệu đăng ký có diễn ra đối với một DLL tùy ý hay không.
Để xác định xem một DLL đã được đăng ký chưa, bạn cần mang theo kiến thức cụ thể về tên miền. Nếu bạn biết rằng một DLL đăng ký một đối tượng COM với một CLSID cụ thể, bạn có thể kiểm tra xem CLSID đó có thực sự được đăng ký hay không.
OK, điều đó là không thể, nhưng DLL thường tự đăng ký tạo một mục trong sổ đăng ký. Một cách giải quyết là:
reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"
Một câu trả lời tốt hơn sẽ cho phép tôi tìm GUID trực tiếp từ tệp trước khi được đăng ký. Ít nhất theo cách này bạn có thể tạo một tập lệnh để cài đặt và xác minh nếu nó được cài đặt thành công.
REG QUERY
để tìm tên tệp DLL.
Tôi cần kiểm tra xem một DLL với tên cụ thể đã được đăng ký chưa và tôi đã sử dụng lệnh này trong BAT của mình:
reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING
Nếu với errorlevel gửi điều khiển đến nhãn khi reg query
không tìm thấy gì. Bạn có thể cần thay đổi một phần của sổ đăng ký nơi bạn tìm kiếm (trong trường hợp của tôi HKLM'...
, đường dẫn càng cụ thể càng nhanh, nếu không sẽ mất nhiều thời gian).
Đầu ra có thể được xử lý nếu cần thiết, GUID cho mục nhập có thể được lấy, nhưng đó là ngoài phạm vi của lệnh truy vấn reg.
Để tìm các mục đăng ký (và các đối tượng COM tùy chọn) cho một DLL từ dòng lệnh , sự kết hợp các câu trả lời của @ virgo47 và @neves hoạt động tốt nhất với tôi.
reg truy vấn HKLM \ SOFTWARE \ Classes / s / f anything.dll
/s /f "{GUID}"
phải nhanh hơn | findstr /i "{GUID}"
. Và | find /i "{GUID}"
dường như là một lỗi đánh máy (nhưng tôi chưa thể viết bình luận trên Serverfault).)
truy vấn reg HKCR \ CLSID / s / f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"