Как проверить, зарегистрирован ли COM-компонент (EXE/DLL файл) или нет с помощью .NET?
Как проверить, зарегистрирован ли COM-компонент (EXE/DLL файл) или нет (с использованием .NET)?
Ответ 1
Просто выполните поиск в реестре. HKEY_CLASSES_ROOT\yourcom.component.
Ответ 2
Это зависит. Ваш компонент будет зарегистрирован в реестре Windows, поэтому вам нужно выяснить, какой улей вы хотите посмотреть.
Если ваш компонент установлен с regasm, скорее всего, будет использоваться HKCU, поскольку он будет запущен из командной строки пользователя. Если, однако, вы используете MSI, MSI может не использовать regasm и может помещать записи непосредственно в HKLM, если вы запускаете MSI в режиме PER MACHINE (ALLUSERS = "1" ) или в качестве администратора. С другой стороны, если вы запускаете MSI как PER USER (ALLUSERS = "") или как непривилегированную учетную запись, она будет использовать HKCU.
HKCR объединяет представление HKLM и HKCU, поэтому вы не можете определить, какой улей был фактически использован, и это может не дать вам то, что вы хотите знать. MSDN HKEY_CLASSES_ROOT
Если ваш COM-компонент зарегистрирован PER USER, он может выйти из строя в зависимости от того, какой пользователь выполнил установку. Поэтому, если вы хотите проверить, была ли она установлена ПРАВИЛЬНО, вам нужно выяснить, какой ключ вы действительно хотите использовать, или если HKCR является приемлемым. Для тестирования конечных пользователей HKCR может быть самым безопасным способом тестирования, поскольку он будет доступен всем и (в .NET) не будет бросать исключения безопасности.
Также см. этот пост: regasm и HKCU
Ответ 3
Из Visual Studio вы можете сделать это из диспетчера ссылок.
- Перейдите в Обозреватель решений > Ссылки
- Щелкните правой кнопкой мыши ссылку
- Выберите Добавить ссылку...
- Выберите пункт COM из меню
Самое приятное в этом инструменте - вы можете искать объекты по ключевому слову немного элегантнее, чем переходить через реестр. Обратите внимание, что вы также можете видеть объекты, не связанные с COM, зарегистрированные в GAC.