Когда вы регистрируете DLL на старых машинах (Windows XP), regsrv всегда сообщает, что регистрация прошла успешно. Это происходит, даже если у пользователя нет разрешения на регистрацию.
Есть ли с именем DLL команда, которую я могу запустить в командной строке, чтобы проверить, установлена ли DLL?
Я нашел эту ссылку: Как я могу узнать, зарегистрирована ли DLL?:
Учитывая, что регистрация DLL может включать в себя произвольные операции, не существует универсального способа определения того, произошла ли регистрация для произвольной DLL.
Чтобы определить, была ли зарегистрирована DLL, вам необходимо предоставить знания о предметной области. Если вы знаете, что DLL регистрирует COM-объект с определенным CLSID, вы можете проверить, действительно ли этот CLSID зарегистрирован.
Хорошо, это невозможно, но библиотеки DLL обычно регистрируются, создавая запись в реестре. Обходной путь:
reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"
Лучший ответ позволил бы мне найти GUID непосредственно из файла до его регистрации. По крайней мере, таким образом вы можете создать сценарий для установки и проверить, успешно ли он установлен.
Мне нужно было проверить, зарегистрирована ли DLL с определенным именем, и я использовал эту команду в своей BAT:
reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING
Если с errorlevel отправил управление на этикетку, когда reg query
ничего не нашел. Возможно, вам придется изменить часть реестра, в которой вы ищете (в моем случае HKLM'...
, чем конкретнее путь, тем быстрее, иначе это займет очень много времени).
При необходимости вывод можно обработать, можно получить GUID для записи, но это выходит за рамки команды запроса reg.
Чтобы найти записи реестра (и, возможно, объекты COM) для DLL из командной строки, комбинация ответов @ virgo47 и @neves сработала для меня лучше всего.
reg запрос HKLM \ SOFTWARE \ Classes / s / f Any.dll
/s /f "{GUID}"
должно быть быстрее, чем | findstr /i "{GUID}"
. И | find /i "{GUID}"
кажется опечаткой (но я пока не могу писать комментарии к Serverfault).) reg query HKCR \ CLSID / s / f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"