是否有可以为注册表内容编制索引以便快速查找的软件?[关闭]


16

在Windows注册表中进行搜索可以非常方便。

是否有一些可用的工具可以索引整个注册表的内容或单个配置单元的内容,从而可以进行快速查找?(例如,生成一些启用了FTS3或FTS4的SQLite数据库以进行全文搜索)

谢谢。

PS。我不希望RegScanner或每次都执行新的线性搜索的工具。我想要一个索引器,通过它可以立即进行搜索。查看问题评论。




2
@Benoit:这让我很困扰,我今天将尝试编写这样的应用程序。
Tamara Wijsman

1
@TomWij:会商业吗?开源?我可以对其进行Beta测试:-)吗?这是一个很棒的项目,我支持。
Benoit

1
@TomWij:我不知道你的意思了“正常工作”,但是请注意,你实际上打开键ControlSet001(或者ControlSet002或其他一些之一),没有 CurrentControlSetCurrentControlSet实际上是到这些键的链接,并且无法使用常规.NET函数查看链接本身;您需要一个功能NtOpenKey来打开实际的符号链接,而不是目标。看看这里这里
user541686 2011年

Answers:


11

介绍

我编写了一个为注册表编制索引的应用程序以及另一个搜索该索引的应用程序。

当您键入时,这将导致近乎即时的结果,这使您可以快速搜索一些内容。

观看此视频演示,显示结果有多快,三个不同的搜索和两个注册表跳转。

索引

在此处输入图片说明

为了建立索引,我使用的是Lucene.net听起来不熟悉吗?

这使我可以直接从注册表中为数据建立索引,而无需使用SQL数据库来存储数据。此外,Lucene.net具有许多索引选项和与搜索相关的功能非常方便!

该索引将存储在中%LOCALAPPDATA%\RegistryIndex,并且大小约为160 MB。

应用程序1:RegistryIndex.exe

这将转储整个注册表上面提到的索引文件夹,
请注意,HKEY_CLASSES_ROOTHKEY_CURRENT_USER在快捷荨麻疹,因此没有编入索引。

尽管它可以正常运行,但您可能需要将其配置为以管理员身份自动运行

应用程序显示完成后,您可以关闭窗口,从而创建索引。

应用程序2:RegistrySearch.exe

这很简单,在上面的文本框中键入要搜索的内容,结果就会流入。

键入不正确的语法将导致黄色的文本框,并在底部的状态栏中显示错误。

支持特殊搜索功能,例如通配符和布尔运算,请参阅查询语法以获取更多信息。请注意,指定字段在当前设置中不起作用,系统将搜索带标记的路径和值的串联。因此,值为DEF的A \ B \ C变为ABCDEF。

搜索精确路径的示例: "HKEY_LOCAL_MACHINE SOFTWARE"

搜索仅限于1000个结果。

双击条目以在注册表中跳转至该条目,该条目使用SysInternals中的regjump.exe
您需要以管理员身份运行搜索程序才能使跳转生效,并首次接受EULA。

未来功能

将当前版本视为技术预览,它可以正常工作,但可以使用重构和补充。

  • 应用程序图标和版本
  • 组态
  • 突出结果
  • 安装程序包
  • 监视服务(使用挂钩跟踪注册表更改并更新索引)

变化

  • 21/03:现在存储在中%LOCALAPPDATA%,请求Administrators许可。

下载

单击此处下载,将所有文件解压缩到首选位置,创建RegistryIndex / Search.exe的快捷方式。

资源

它没有混淆,因此要检查IL,可以根据需要使用Reflector。

当它具有更多功能时,我可能会发布源代码,也许我可以将其放在CodePlex上。


2
如果您的应用使用%LOCALAPPDATA%而不是%APPDATA%,那就更好了。
edusysadmin 2011年

1
@edusysadmin:已调整,现在保存到%LOCALAPPDATA%,并询问管理员权限。
Tamara Wijsman

1
谢谢。我已经使用法语的Win Vista下载了软件包,甚至以管理员身份运行RegistryIndex.exe也失败。(一直说“请以管理员身份运行”)。您是否知道为什么会失败?
Benoit

@Benoit:我正在使用Microsoft网站中的管理员部分代码,但这似乎是非国际代码。所有其他代码在国际上都看得到。问题在于,它会在“管理员”组中查找权限,因为在您的计算机上该组的名称不同,因此失败。现在已解决此问题,该方法new System.Security.Principal.SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null).Translate(typeof(System.Security.Principal.NTAccount)).ToString().Split('\\').Last()用于获取组名。
Tamara Wijsman

1
你好,这个项目还活着吗?上次我正在做很多逆向工程,这可能非常有用。有没有新链接?
德米特里·古萨罗夫'18

3

看一下NirSoft的RegScanner。不是索引器,但它会超出RegEdit的搜索范围,它将为您打开RegEdit使其处于选定的匹配范围,以及其他出色功能。在开始开发项目之前一定要尝试一下(除非您想为此做项目)-您可能会发现您实际上并不需要更多。


正如评论中已经提到的那样:这是一个很好的工具,但是不会对任何内容建立索引。
Benoit

正如我也说的。但是,您的问题在第一句话中是针对RegEdit的速度较慢,而不是其技术,因此RegScanner可以很好地解决这一问题。我会把建议留给将来可能对谁有用的人。
JRobert

很好的工具!+1
Piotr Dobrogost 2011年

1

您可以将注册表导出到.reg文本文件,然后使用喜欢的编辑器进行搜索。


这实际上是一个不错的主意,但由于没有索引,因此可能不是最佳选择。
Benoit

请注意,当然,然后以某种方式将所有reg文件插入启用了FTS3或FTS4的SQLite中可能是这样做的一种方式。
Benoit

@Benoit:实际上,我首先只是将整个注册表枚举为纯文本文件,然后使用Notepad ++进行搜索实际上是非常快速的。我正在使用Lucene.Net进行索引编制,因为它是为该任务专门编写的,不需要我创建SQL解决方案,它还支持突出显示功能(它适用于搜索引擎,顺便说一句,SE使用Lucene.net (这里的搜索引擎)),我可能会尝试将其包括在更高版本中。我猜您在输入索引/ FTS时会在搜索结果中找到结果,但尚未尝试过……
Tamara Wijsman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.