古いマシン(Windows XP)でDLL)を登録する場合、regsrvは常に登録が成功したと表示します。これは、ユーザーに登録する権限がない場合でも発生します。
DLLの名前を使用して、DLLがインストールされているかどうかを確認するためにコマンドラインで実行できるコマンドはありますか?
私はこのリンクを見つけました: DLLが登録されているかどうかを確認するにはどうすればよいですか? :
DLL登録には任意の操作が含まれる可能性があるため、登録が任意のDLLに対して行われたかどうかを判別する汎用的な方法はありません。
DLLが登録されているかどうかを判断するには、ドメイン固有の知識を取り込む必要があります。DLLが特定のCLSID、そのCLSIDが実際に登録されているかどうかを確認できます。
OK、それは不可能ですが、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
エラーレベルがある場合は、いつでもreg query
何も見つかりませんでした。検索するレジストリの部分を変更する必要がある場合があります(私の場合はHKLM'...
、より具体的なパスの方が高速です。それ以外の場合は本当に時間がかかります)。
必要に応じて出力を処理できます。エントリのGUIDを取得できますが、これはreg queryコマンドの範囲外です。
DLL コマンドラインから)のレジストリエントリ(およびオプションでCOMオブジェクト)を見つけるには、@ virgo47と@nevesの回答の組み合わせが最適でした。
reg query HKLM\SOFTWARE\Classes/s/f whatever.dll
/s /f "{GUID}"
を使用すると| findstr /i "{GUID}"
よりも高速になります。そして| find /i "{GUID}"
はタイプミスのようです(しかし、まだServerfaultにコメントを書き込むことはできません)。)reg query HKCR\CLSID/s/f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"