Ayuda here ...
Microsoft tiene una gran (pero no muy conocida) herramienta para esto - llamada LogParser
Utiliza un motor SQL para consultar todo tipo de datos basados en texto como el Registro, el Sistema de archivos, el registro de eventos, AD, etc. ... Para poder usar C#, necesita construir un Ensamblaje de interoperabilidad del Logparser. dll Servidor COM que utiliza el siguiente comando (ajuste LogParser.dll ruta) .
tlbimp "C:\Program Files\Log Parser 2.2\LogParser.dll"
/out:Interop.MSUtil.dll
A continuación se presenta una muestra pequeña, que ilustra cómo consultar el valor 'VisualStudio' en el \ HKLM \ SOFTWARE \ Microsoft árbol.
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();
}
}
}
esto solo mira en los valores de registro, ¿hay alguna manera de buscar también la clave de registro? intenté reemplazar 'Value' con' KeyName' no funcionó. Gracias –