Ответ 1
Просто выполните поиск в реестре. HKEY_CLASSES_ROOT\yourcom.component.
Как проверить, зарегистрирован ли COM-компонент (EXE/DLL файл) или нет с помощью .NET?
Просто выполните поиск в реестре. HKEY_CLASSES_ROOT\yourcom.component.
Это зависит. Ваш компонент будет зарегистрирован в реестре 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
Из Visual Studio вы можете сделать это из диспетчера ссылок.
Самое приятное в этом инструменте - вы можете искать объекты по ключевому слову немного элегантнее, чем переходить через реестр. Обратите внимание, что вы также можете видеть объекты, не связанные с COM, зарегистрированные в GAC.