2009-04-02 25 views

Trả lời

4

Những gì tôi thường làm (và sẽ làm, nếu tôi cần điều này một lần nữa) là cố gắng tạo một đối tượng của một lớp bạn biết là trong thư viện COM - hoặc bằng ProgID hoặc GUID - và kiểm tra thất bại.

+0

Nên mạnh mẽ hơn quét registry, cộng với việc phát hiện cài đặt không đúng. Phụ thuộc vào việc tải DLL hoặc tạo đối tượng là tốn kém, mặc dù. –

+0

Phải. Có lẽ tốt nhất để thử và sử dụng một lớp "phù hợp" từ thư viện. Và tôi đoán sẽ không cần phải kiểm tra xem thư viện COM có được cài đặt không nếu bạn không định làm gì ít nhất với thư viện, vì vậy sau đó tải nó để kiểm tra cài đặt thường không có vấn đề gì ... – peSHIr

0

Hãy thử và tạo và xử lý lỗi nếu không.

Dưới Win32 CoCreateInstance sẽ trả lại REGDB_E_CLASSNOTREG nếu chưa được cài đặt (bao gồm IIRC, nếu đã đăng ký nhưng sau đó dll/exe triển khai nó sẽ bị xóa).

Theo .NET, lắp ráp COM interop được tạo sẽ ném một số lỗi (cần phải kiểm tra điều này, không có mã thuận tiện để kiểm tra loại ngoại lệ nào). Chú thích. nếu hội đồng interop bị thiếu thì điều đó sẽ được coi là thiếu lắp ráp có thể dẫn đến lỗi tải ứng dụng.

Các vấn đề liên quan