回答:
このリンクを見つけました:DLLが登録されているかどうかを確認するにはどうすればよいですか?:
DLLの登録には任意の操作を含めることができるため、任意のDLLに対して登録が行われたかどうかを判断する汎用的な方法はありません。
DLLが登録されているかどうかを判断するには、ドメイン固有の知識を取り入れる必要があります。DLLが特定のCLSIDでCOMオブジェクトを登録することがわかっている場合、そのCLSIDが実際に登録されているかどうかを確認できます。
OK、それは不可能ですが、通常、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
errorlevelを使用すると、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}"