Справка здесь ...
У Microsoft есть отличный (но не очень известный) инструмент для этого - LogParser
Он использует движок SQL для запроса всех видов текстовых данных, таких как реестр,
Файловая система, журнал событий, AD и т.д ...
Чтобы использовать его из C #, вам нужно собрать Interop Assembly из
COM-сервер Logparser.dll, используя следующие (отрегулируйте путь LogParser.dll)
команда.
tlbimp "C:\Program Files\Log Parser 2.2\LogParser.dll"
/out:Interop.MSUtil.dll
Ниже приведен небольшой пример, который иллюстрирует, как запросить значение
VisualStudio в дереве \ HKLM \ SOFTWARE \ Microsoft.
using System;
using System.Runtime.InteropServices;
using LogQuery = Interop.MSUtil.LogQueryClass;
using RegistryInputFormat = Interop.MSUtil.COMRegistryInputContextClass;
using RegRecordSet = Interop.MSUtil.ILogRecordset;
class Program
{
public static void Main()
{
RegRecordSet rs = null;
try
{
LogQuery qry = new LogQuery();
RegistryInputFormat registryFormat = new RegistryInputFormat();
string query = @"SELECT Path from \HKLM\SOFTWARE\Microsoft where
Value='VisualStudio'";
rs = qry.Execute(query, registryFormat);
for(; !rs.atEnd(); rs.moveNext())
Console.WriteLine(rs.getRecord().toNativeString(","));
}
finally
{
rs.close();
}
}
}