当前位置:  开发笔记 > 编程语言 > 正文

如何在注册表项中搜索特定值

如何解决《如何在注册表项中搜索特定值》经验,为你挑选了2个好方法。

如何在注册表项中搜索特定值?

例如,我想在中搜索XXX

HKEY_CLASSES_ROOT\Installer\Products

C#中的任何代码示例都将受到赞赏,

谢谢



1> Arnout..:

如果你不想依赖LogParser(虽然功能强大):我会看看这个Microsoft.Win32.RegistryKey类(MSDN).使用OpenSubKey开辟HKEY_CLASSES_ROOT \安装\产品,然后打电话GetSubKeyNames,好了,让子项的名称.

依次打开每一个,调用GetValue你感兴趣的值(ProductName,我猜)并将结果与​​你想要的结果进行比较.



2> Galwegian..:

在这里帮忙......

微软有一个很棒的(但不是很知名的)工具 - 名为LogParser

它使用SQL引擎查询所有类型的基于文本的数据,如Registry,Filesystem,eventlog,AD等...要从C#中使用,您需要使用以下命令从Logparser.dll COM服务器构建Interop程序集(调整LogParser.dll路径)命令.

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

以下是一个小样本,演示了如何查询\ HKLM\SOFTWARE\Microsoft树中的值'VisualStudio'.

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

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有