DLLが登録されているかどうかを知るにはどうすればよいですか?


28

古いマシン(Windows XP)でDLLを登録するとき、regsrvは常に登録が成功したと言います。これは、ユーザーに登録する権限がない場合でも発生します。

DLLの名前で、コマンドラインで実行してDLLがインストールされているかどうかを確認できるコマンドはありますか?

回答:


22

このリンクを見つけました:DLLが登録されているかどうかを確認するにはどうすればよいですか?

DLLの登録には任意の操作を含めることができるため、任意のDLLに対して登録が行われたかどうかを判断する汎用的な方法はありません。

DLLが登録されているかどうかを判断するには、ドメイン固有の知識を取り入れる必要があります。DLLが特定のCLSIDでCOMオブジェクトを登録することがわかっている場合、そのCLSIDが実際に登録されているかどうかを確認できます。

OK、それは不可能ですが、通常、DLLは自分自身を登録して、レジスタにエントリを作成します。回避策は次のとおりです。

  1. 最初に、DLLのCOM GUIDを発見する必要があります。すでに登録されているマシンが1台ある場合は、次のことができます。
    1. regeditを開き、DLLファイル名を検索します
    2. 登録されている場合、TypeLibの下にあるキーの下にファイル名があります。キーは次のようになります:{9F3DBFEE-FD77-4774-868B-65F75E7DB7C2}
  2. DLL GUIDがわかったので、DOSプロンプトで次のコマンドを使用してそれを検索できます。 reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"

より良い答えがあれば、登録する前にファイルからGUIDを直接見つけることができます。少なくともこの方法で、インストールするスクリプトを作成し、正常にインストールされたかどうかを確認できます。


4
実際にGUIDを事前に知る必要はありません。より簡単な方法は、DLL ファイル名をレジストリで検索することです。その名前がこれらのGUIDキーのいずれかにリストされている場合、はい、DLLは実際に登録されています。
マッシモ14

@Massimo:しかし、どのように検索しますか?どのキーに?シェルの履歴に誤って表示されることがあります(たとえば、管理者にならずに登録しようとした)
14

HKCR、明らかに:)または少なくともHKLMの下で。ユーザー固有のもの(シェル履歴など)はHKCUの下にあります。
マッシモ14

@Massimo:ここにシェルコマンドで答えを入力して検索した場合、それを正しい答えとしてマークします。
ネベス

それはあなたのものと同じです:REG QUERYDLLファイル名を探すために使用します。
マッシモ

13

特定の名前のDLLが登録されているかどうかを確認する必要があり、BATで次のコマンドを使用しました。

reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING

errorlevelを使用すると、reg query何も見つからない場合にラベルに制御が送信されます。検索するレジストリの一部を変更する必要がある場合があります(私の場合HKLM'...、より具体的なパスほど高速になります。そうしないと、本当に時間がかかります)。

必要に応じて出力を処理でき、エントリのGUIDを取得できますが、これはreg queryコマンドの範囲外です。


0

コマンドラインから DLLのレジストリエントリ(およびオプションでCOMオブジェクト)を見つけるには、@ virgo47と@nevesによる回答の組み合わせが最適でした。

  1. DLL名を含むレジストリエントリを見つけます。これらのエントリは通常、GUIDをキーとして使用します。

    reg query HKLM \ SOFTWARE \ Classes / s / f whatever.dll

  2. (オプション)これらのGUIDに登録されているCOMオブジェクトを検索します。(使用/s /f "{GUID}"| findstr /i "{GUID}"。よりも高速である必要が| find /i "{GUID}"あり、タイプミスのように見えます(ただし、Serverfaultにまだコメントを書くことはできません)。)

    reg query HKCR \ CLSID / s / f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.