Tôi có một tình huống trong đó một DLL được quản lý gọi một số DLL không được quản lý. Tôi biết CLSID của DLL không được quản lý, có cách nào để tìm ra những tập tin nhị phân nhà mà CLSID?Làm thế nào để tìm một DLL cho một CLSID?
Trả lời
Normaly, bạn chỉ có thể đi đến:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID \ "GUID"
Và tìm một chìa khóa gọi là "InprocServer32" ví dụ và sẽ có giá trị mặc định mà có DLL. Đây là một cách đơn giản để làm điều đó.
Lưu ý rằng, tùy thuộc vào cách nó được cài đặt, bạn có thể tìm thấy nó trong HKEY_CURRENT_USER \ SOFTWARE \ Classes \ CLSID thay thế. – user1454265
Có nghĩa là 'HKEY_CLASSES_ROOT \ CLSID' là những gì nên được sử dụng. – IllidanS4
Bạn có thể không chỉ tìm kiếm nó trong sổ đăng ký sử dụng regedit và tìm kiếm đường dẫn nhị phân.
Dựa trên BobbyShaftoe trả lời chúng ta có thể xây dựng một kịch bản vbs đơn giản mà đọc registry mà đối với chúng tôi:
Dll_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"
Dán sau đây để "test.vbs"
Sub Main
' used to find location of "System.Collections.ArrayList" progid dll
Const csGUID = "{6896B49D-7AFB-34DC-934E-5ADD38EEEE39}"
MsgBox srGetDllPathByGUID(csGUID)
End Sub
Function srGetDllPathByGUID(sGUID)
Const csRegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"
Dim oShell: Set oShell = CreateObject("WScript.Shell")
Dim sReg: sReg = Replace(csRegPath, "<GUID>", sGUID) ' build str
srGetDllPathByGUID = oShell.RegRead(sReg)
Set oShell = Nothing ' clean up
End Function
Call Main
Bạn cũng có thể tìm ProgID by:
ProgID_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\ProgID\"
- 1. Làm thế nào để liên kết một .DLL tĩnh?
- 2. Làm cách nào để đổi tên một DLL nhưng vẫn cho phép EXE tìm thấy nó?
- 3. .NET - Làm thế nào để gỡ lỗi một DLL?
- 4. Làm thế nào để tải một dll C# trong python?
- 5. Làm thế nào để sử dụng một lớp trong DLL?
- 6. Làm thế nào để tìm ra đường dẫn DLL của một lệnh ghép ngắn PowerShell
- 7. Cho COM DLL, trích xuất tất cả các lớp CLSID và tên giao diện tương ứng
- 8. Làm thế nào tôi có thể thiết lập một entrypoint cho một dll
- 9. Làm thế nào để biên dịch một exe hoặc một dll để lắp ráp
- 10. Làm thế nào để tạo một dll như shell32.dll có chứa các biểu tượng
- 11. Làm thế nào để tạo một số lớp từ dll (constructor in dll)? (С ++)
- 12. Làm thế nào để biết một tập tin là một EXE hoặc một DLL?
- 13. Làm thế nào để ẩn các chuỗi trong một exe hoặc một dll?
- 14. Làm thế nào tôi có thể vượt qua một chuỗi Delphi để một Prism DLL?
- 15. Làm thế nào để gọi một DLL .NET từ một tiến trình Win32?
- 16. Làm thế nào để kiểm tra một DLL nếu một hàm tồn tại?
- 17. Làm thế nào để sửa đổi một chức năng trong một biên dịch DLL
- 18. Làm thế nào để tìm kiếm một mảng lớn cho một đối tượng?
- 19. Làm thế nào để bảo vệ dll?
- 20. Làm thế nào để tìm một lỗi hiếm?
- 21. Làm thế nào để có được tên tập tin của một DLL?
- 22. Làm thế nào để tìm một thư viện với cmake?
- 23. Làm thế nào để P/Gọi một dll bản xứ từ Metro?
- 24. Làm thế nào để bạn trích xuất mã nguồn của lớp học từ một tệp dll?
- 25. Làm thế nào để tìm ra một id prog COM?
- 26. Làm thế nào để thêm một dll để gac trong vista
- 27. Làm thế nào để gỡ lỗi một dll tham chiếu (có pdb)
- 28. Làm thế nào để xác định một cửa sổ thực thi DLL phụ thuộc programatically?
- 29. Làm thế nào để làm cho một DIV không quấn?
- 30. Làm thế nào để làm cho Class.getMethod() ném một SecurityException
Bạn đang cố gắng thực hiện điều này theo chương trình, hoặc quảng cáo hoc? Tức là, bạn có cần một chương trình để tự làm điều này hay đây là điều mà đôi khi bạn cần làm với tư cách là một nhà phát triển? –