Відповіді:
Я знайшов це посилання: Як я можу дізнатися, чи зареєстрована DLL? :
З огляду на те, що реєстрація DLL може охоплювати довільні операції, немає загального способу визначення, чи відбулася реєстрація для довільної DLL.
Щоб визначити, чи була зареєстрована DLL, вам потрібно залучити знання, характерні для домену. Якщо ви знаєте, що DLL реєструє COM-об'єкт з певним CLSID, ви можете перевірити, чи справді зареєстрований CLSID.
Гаразд, це неможливо, але DLL-файли зазвичай реєструються, створюючи запис у реєстрі. Вирішення завдання полягає в тому, щоб:
reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"
Краща відповідь дозволить мені знайти GUID безпосередньо з файлу до його реєстрації. Принаймні таким чином ви можете створити сценарій для встановлення та перевірити, чи він був успішно встановлений.
REG QUERY
для пошуку імені файлу DLL.
Мені потрібно було перевірити, чи зареєстрована DLL з конкретним іменем, і я використовував цю команду в своєму BAT:
reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING
Якщо з рівнем помилок надсилав керування етикетці, коли ніколи reg query
нічого не знаходив. Можливо, вам знадобиться змінити частину реєстру, де ви шукаєте (у моєму випадку HKLM'...
, чим конкретніший шлях, тим швидше, інакше це займе дуже багато часу).
Вихід може бути оброблений при необхідності, GUID для запису може бути отриманий, але це не входить до сфери використання команди запиту рег.
Щоб знайти записи реєстру (і необов'язково COM-об'єкти) для DLL з командного рядка , найкраще для мене працювала комбінація відповідей @ virgo47 та @neves.
регістр запиту HKLM \ SOFTWARE \ Classes / s / f what.dll
/s /f "{GUID}"
має бути швидше, ніж | findstr /i "{GUID}"
. І, | find /i "{GUID}"
здається, друкарська помилка (але я поки не можу писати коментарів на серверних замовчуванням).)
регістр запиту HKCR \ CLSID / s / f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"