Tôi biết cách đăng ký dll nhưng tôi chưa bao giờ thực sự chắc chắn lý do tại sao tôi làm điều đó hoặc theo những điều kiện dll phải được đăng ký. Ai đó có thể giải thích hoặc chỉ cho tôi một số tài liệu?Việc đăng ký một DLL là gì?
Trả lời
Khi một DLL được đăng ký, điểm nhập phương thức DllRegisterServer
trong DLL của bạn được gọi. Tương tự, DllUnregisterServer
được gọi khi một DLL không được đăng ký.
Như đã trình bày trong this MSDN article:
chỉ thị một máy chủ trong quá trình để tạo các khóa registry của nó cho tất cả lớp hỗ trợ trong máy chủ module này. Nếu chức năng này không thành công, trạng thái đăng ký cho tất cả các lớp không xác định.
Đối với các DLL COM, bạn sẽ cần phải triển khai các phương thức điểm nhập DllRegisterServer
và DllUnregisterServer
của riêng bạn để đăng ký/hủy đăng ký phù hợp. Mã ví dụ cho DllRegisterServer
có thể được tìm thấy here.
Kết quả cuối cùng của việc đăng ký DLL là tất cả CLSID cho các thành phần trong DLL được đăng ký theo HKEY_CLASSES_ROOT\CLSID
. Điều này cho phép CoCreateInstance
tìm đúng máy chủ khi khởi tạo đối tượng COM từ một DLL hoặc ứng dụng khác.
DllUnregisterServer
sẽ làm ngược lại và xóa tất cả CLSID khỏi sổ đăng ký được đặt trong đó bằng DllRegisterServer
.
Thông tin chung khác về DllRegisterServer
có thể được tìm thấy here.
Phổ biến nhất được gọi là đăng ký DLL là khi nó triển khai đối tượng COM. regsvr32 đảm bảo rằng một thể hiện của đối tượng có thể được tạo ra. Ví dụ: VBScript sử dụng mới hoặc CreateObject(), việc đăng ký đảm bảo rằng COM biết những gì DLL để tải để thực hiện một thể hiện mới, cho dù theo tên hoặc CLSID.
Xem "the layman's explanation" để có tóm tắt ngắn gọn (rất).
Liên kết bị hỏng. Vui lòng cung cấp một thay thế. –
Xong. Cũng được lưu trữ dưới dạng https://web.archive.org/web/20170222094351/https://chewychong.wordpress.com/2004/08/23/layman-s-explanation-of-regscvs-regasm-regsvr32/ –
Chỉ cần xem mã nguồn của regsvr32.exe
Tôi đã ngạc nhiên khi biết rằng mã nguồn này thực sự có sẵn với Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –
- 1. Dll interop là gì?
- 2. Đăng ký% eiz là gì?
- 3. đăng ký com dll trong wix
- 4. Đăng ký một NET COM DLL trong Wix Install
- 5. Tự động đăng ký dll bằng Assembly.Load
- 6. 'Ngân hàng' đăng ký nghĩa là gì?
- 7. Đăng ký một lợi nhuận dll 0x80020009 lỗi
- 8. Đăng ký một C#/VB.NET COM dll theo lập trình
- 9. Ưu điểm của việc tải DLL động là gì?
- 10. dll là gì?
- 11. DLL gốc là gì?
- 12. Dll cướp là gì?
- 13. Ví dụ điển hình về việc sử dụng biến đăng ký trong C là gì?
- 14. Mục đích của việc đăng ký các lớp cửa sổ là gì?
- 15. Không thể đăng ký DLL bằng cách sử dụng WiX
- 16. Hủy đăng ký DLL bằng cách sử dụng regsvr32
- 17. Lợi thế của việc sử dụng COM trên một DLL đơn giản là gì?
- 18. "Dấu chấm" là gì khi đăng ký Hoạt động
- 19. đăng ký trong băng tần trong xmpp là gì?
- 20. Trong .NET, có cần phải đăng ký DLL không?
- 21. Module đăng ký trong IIS7 doens't làm việc
- 22. Đăng ký một tính tùy chỉnh Spree không làm việc
- 23. lợi ích của việc ký dll với tên mạnh
- 24. DLL un/managed là gì? Mã un/managed là gì?
- 25. Việc ký vào các biểu hiện ClickOnce là gì?
- 26. Tiếp cận đối tượng COM đăng ký từ trăn qua một TLB đăng ký
- 27. Làm cách nào để kiểm tra xem một dll COM được đăng ký trong C#
- 28. Ký hiệu # 4 là gì?
- 29. Mục đích của phân đoạn đăng ký ở chế độ được bảo vệ x86 là gì?
- 30. Đăng ký thành thạo Windsor Castle - Chọn gì() làm gì?
Khi tôi tạo một ActiveX DLL trong VB6, tôi không phải triển khai DllRegisterServer. – CJ7