Я использую regsvr32 для регистрации и отмены регистрации неуправляемой DLL, чтобы использовать ее в моем приложении С#. Но я не видел никаких параметров в инструменте regsvr32, в котором перечислены все зарегистрированные DLL, поэтому как я могу получить список всех зарегистрированных DLL?
Как я могу получить список всех неуправляемых библиотек DLL, зарегистрированных в regsvr32?
Ответ 1
Чтобы просмотреть все зарегистрированные DLL файлы, вы можете использовать следующие бесплатные утилиты:
-
RegDllView - это инструмент для просмотра зарегистрированных файлов dll/ocx/exe в вашей системе и также может регистрировать DLL файлы из Explorer.
-
ListDLLs - еще один инструмент, который сообщает DLL, загруженные в процессы. Вы можете использовать его для отображения всех DLL файлов, загружаемых во все процессы, в определенный процесс или для перечисления процессов, в которых загружена определенная DLL. ListDLLs также может отображать полную информацию о версии для DLL, включая их цифровую подпись, и может использоваться для сканирования процессов для неподписанных DLL.
-
Наконец, вы также можете обратиться к этой статье Dll Profiler в С# на CodeProject.com. DLL-профайлер используется список всех DLL файлов, которые в настоящее время загружены на вашем компьютере, включая их загрузку и их номер версии, размер, дату изменения, название продукта и версию продукта.
Ответ 2
Вы можете использовать Registry для чтения всех зарегистрированных CLSID в Computer\HKEY_CLASSES_ROOT\Wow6432Nodes\CLSID
. Не смотрели 32-битную Windows, чтобы увидеть, где находятся CLSIDs
.
Ответ 3
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);
}
}
}
}
}