2008-11-17 12 views

Antwort

11

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(); 
} 
} 
} 
+0

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 –

17

Falls Sie nicht möchten, dass eine Abhängigkeit von LogParser (so mächtig wie es ist) zu nehmen: ich einen Blick auf die Microsoft.Win32.RegistryKey Klasse nehmen würde (MSDN). Verwenden Sie OpenSubKey, um HKEY_CLASSES_ROOT \ Installer \ Products zu öffnen, und rufen Sie dann GetSubKeyNames an, nun, erhalten Sie die Namen der Unterschlüssel.

Öffnen Sie nacheinander alle diese, rufen Sie GetValue für den Wert, der Sie interessiert (ProductName, ich denke) und vergleichen Sie das Ergebnis mit dem, was Sie suchen.

Verwandte Themen