Hilfe here ...
Microsoft a hat großes (aber nicht gut bekanntes) Werkzeug dafür - genannt LogParser
Es verwendet eine SQL-Engine, um alle Arten von textbasierten Daten wie die Registry, das Dateisystem, das Eventlog, AD usw. abzufragen ... Um aus C# verwendbar zu sein, müssen Sie eine Interop Assembly aus dem Logparser erstellen. Dll COM-Server mit folgenden (anpassen LogParser.dll Pfad) Befehl.
tlbimp "C:\Program Files\Log Parser 2.2\LogParser.dll"
/out:Interop.MSUtil.dll
Es folgt eine kleine Probe, die zeigt, wie der Wert 'Visual Studio' in der \ HKLM \ SOFTWARE \ Microsoft Baum abzufragen.
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();
}
}
}
Dies untersucht nur Registrierungswerte, gibt es eine Möglichkeit, auch nach Registrierungsschlüssel zu suchen? Ich habe versucht, 'Value' mit' KeyName' zu ersetzen, hat nicht funktioniert. Vielen Dank –