16

regsvr32 を使用して、管理されていない DLL を登録および登録解除し、C# アプリケーションで使用します。しかし、登録されているすべての DLL を一覧表示する regsvr32 ツールのパラメーターが見当たりませんでした。登録されているすべての DLL の一覧を取得するにはどうすればよいでしょうか?

4

3 に答える 3

16

登録されているすべての DLL を表示するには、次の無料ユーティリティを使用できます。

  1. RegDllViewは、システムに登録されている dll/ocx/exe ファイルを表示するツールであり、エクスプローラーから dll ファイルを登録することもできます。

  2. ListDLLsは、プロセスにロードされた DLL を報告する別のツールです。これを使用して、すべてのプロセスまたは特定のプロセスに読み込まれたすべての DLL を一覧表示したり、特定の DLL が読み込まれたプロセスを一覧表示したりできます。ListDLLs は、デジタル署名を含む DLL の完全なバージョン情報を表示することもでき、署名されていない DLL のプロセスをスキャンするために使用できます。

  3. 最後に、 CodeProject.com のこのC# の Dll Profiler の記事も参照できます。DLL プロファイラーを使用すると、コンピューターに現在読み込まれているすべての DLL が一覧表示されます。これには、読み込まれた場所、バージョン番号、サイズ、変更日、製品名、および製品バージョンが含まれます。

于 2012-10-07T07:54:46.297 に答える
3

レジストリを使用して、登録されているすべてのCLSIDを読み取ることができるはずですComputer\HKEY_CLASSES_ROOT\Wow6432Nodes\CLSID。32ビットのWindowsを見て、どこにあるかを確認していませんCLSIDs

于 2012-10-07T08:04:37.113 に答える
2
static void Main(string[] args)
{
    var parent = Registry.ClassesRoot.OpenSubKey("CLSID");
    var subKeys = parent.GetSubKeyNames();
    foreach (var subKey in subKeys)
    {
        var sub = parent.OpenSubKey(subKey);
        if (sub != null)
        {
            var inProc = sub.OpenSubKey("InProcServer32");
            if (inProc != null)
            {
                var val = inProc.GetValue(null);
                if (val != null)
                {
                    var name = val.ToString();
                    if (!string.IsNullOrWhiteSpace(name))
                        Console.WriteLine(name);
                }
            }
        }
    }
}
于 2015-09-04T21:29:54.400 に答える