2008-11-17 17 views

cevap

11

Yardım here istiyorum bunun için harika (ama iyi bilinmeyen) bir araç - LogParser

Kayıt Defteri, Dosya Sistemi, eventlog, AD vb. Gibi tüm metin tabanlı verileri sorgulamak için bir SQL motoru kullanır. C# 'dan kullanılabilir olmak için Logparser'den bir Etkileşim Derlemesi oluşturmanız gerekir. Aşağıdaki kullanarak dll COM sunucusu (LogParser.dll yolunu) komutu.

tlbimp "C:\Program Files\Log Parser 2.2\LogParser.dll" 
/out:Interop.MSUtil.dll 

ardından Microsoft ağacının \ \ HKLM \ SOFTWARE Değer 'VisualStudio' sorgulamak üzere verilmektedir küçük bir örnek vardır.

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

bu yalnızca kayıt defteri değerlerine bakar, kayıt defteri anahtarını da aramanın bir yolu var mı? 'Key' ile' Value' değiştirmeyi denedim' işe yaramadı. Teşekkürler –

17

Eğer (o kadar güçlü) LogParser bir bağımlılık almak istemiyorum: Ben Microsoft.Win32.RegistryKey sınıfında (MSDN) bir göz alacaktı. HKEY_CLASSES_ROOT \ Installer \ Products'ı açmak için OpenSubKey kullanın ve alt anahtarların isimlerini almak için GetSubKeyNames numaralı telefonu arayın.

Bunlardan her birini açın, ilgilendiğiniz değer için (ÜrünAdı, sanırım) GetValue numaralı telefonu arayın ve sonucu istediğiniz şeyle karşılaştırın.

İlgili konular