Existe-t-il un logiciel qui peut indexer le contenu du registre pour des recherches rapides? [fermé]

16

La recherche dans le registre Windows peut être ve ------ ry ------ lo ---- ng.

Existe-t-il un outil permettant d' indexer le contenu de l'ensemble du registre ou le contenu d'une seule ruche, de sorte que des recherches rapides soient disponibles? (par exemple, générer une base de données SQLite avec FTS3 ou FTS4 activé pour la recherche en texte intégral)

Je vous remercie.

PS. Je ne veux pas de RegScanner ou d'outils qui effectuent une nouvelle recherche linéaire à chaque fois. Je veux un indexeur , avec lequel une recherche peut alors être instantanée. Voir les commentaires des questions.

Benoit
la source
doublon possible de l' outil de recherche et de remplacement
Mehper C. Palavuzlar
jetez un œil ici: majorgeeks.com/downloads15.html
bubu
2
@Benoit: Cela me dérange beaucoup, je vais essayer d'écrire une telle application aujourd'hui.
Tamara Wijsman
1
@TomWij: Sera-ce commercial? Open source? Puis-je le tester bêta s'il vous plaît :-)? C'est un excellent projet et je le soutiens.
Benoit
1
@ TomWij: Je ne suis pas sûr de ce que vous vouliez dire par "ça marche bien", mais notez que vous avez réellement ouvert la clé ControlSet001(ou peut ControlSet002- être ou une autre), non CurrentControlSet . CurrentControlSetest en fait un lien vers ces clés, et il n'est pas possible d'afficher le lien lui - même à l'aide des fonctions .NET standard; vous avez besoin d'une fonction comme NtOpenKeypour ouvrir le lien symbolique réel au lieu de la cible. Jetez un œil ici et ici .
user541686

Réponses:

11

introduction

J'ai écrit une application qui indexe le registre et une autre application qui recherche cet index.

Cela se traduit par des résultats quasi instantanés pendant que vous tapez, cela vous permet de rechercher rapidement plusieurs choses.

Voir cette démonstration vidéo , montre comment les résultats sont rapides, trois recherches différentes et deux sauts de registre.

L'index

entrez la description de l'image ici

À des fins d'indexation, j'utilise Lucene.net , cela ne vous semble -t-il pas familier ?

Cela me permet d'indexer des données directement à partir du registre, sans utiliser de base de données SQL pour stocker les données. De plus, Lucene.net dispose de nombreuses options d'indexation et de fonctions de recherche utiles.

Cet index sera stocké dans %LOCALAPPDATA%\RegistryIndex, et a une taille d'environ 160 Mo.

Application 1: RegistryIndex.exe

Cela videra tout le registre dans le dossier d'index mentionné ci - dessus,
s'il vous plaît noter que HKEY_CLASSES_ROOTet HKEY_CURRENT_USERsont des ruches raccourci et donc pas indexé.

Bien que cela fonctionne sans que vous souhaitiez le configurer pour qu'il s'exécute automatiquement en tant qu'administrateur .

Une fois que l'application montre que c'est fait, vous pouvez fermer la fenêtre et ainsi l'index a été fait.

Application 2: RegistrySearch.exe

Celui-ci est simple, tapez quelque chose à rechercher dans la zone de texte ci-dessus et les résultats circuleront.

La saisie d' une syntaxe incorrecte entraînera une zone de texte jaune et l'erreur dans la barre d'état en bas.

Des fonctionnalités de recherche spéciales comme les caractères génériques et les opérations booléennes sont prises en charge, voir Syntaxe de requête pour plus d'informations. Veuillez noter que la spécification de champs ne fonctionnera pas dans le paramètre actuel, le système recherche dans une concaténation de chemin et de valeur tokenisés. Donc A \ B \ C avec la valeur DEF devient ABCDE F.

Exemple de recherche d'un chemin exact: "HKEY_LOCAL_MACHINE SOFTWARE"

La recherche est limitée à 1000 résultats.

Double-cliquez sur une entrée pour y accéder dans le Registre, cela utilise regjump.exe de SysInternals.
Vous devez exécuter le programme de recherche en tant qu'administrateur pour que le saut fonctionne, acceptez le CLUF la première fois.

Fonctionnalités futures

Voir la version actuelle comme un aperçu technique, cela fonctionne mais pourrait utiliser le refactoring et le maquillage.

  • Icône et version de l'application
  • Configuration
  • Mise en évidence des résultats
  • Package d'installation
  • Service de surveillance (suit les modifications du registre à l'aide d'un hook et met à jour l'index)

Changements

  • 21/03: Maintenant stocke dans %LOCALAPPDATA%, demande la Administratorspermission.

Télécharger

Cliquez ici pour télécharger , décompressez tous les fichiers vers un emplacement préféré, créez des raccourcis vers RegistryIndex / Search.exe.

La source

Il n'est pas obscurci, donc pour inspecter l'IL, vous pouvez utiliser Reflector si vous le souhaitez.

Je pourrais libérer la source quand elle sera refactorisée avec un peu plus de fonctionnalités, je peux peut-être la mettre sur CodePlex.

Tamara Wijsman
la source
2
Ce serait mieux si votre application utilisait% LOCALAPPDATA% et non% APPDATA%.
edusysadmin
1
@edusysadmin: ajusté, enregistre désormais dans% LOCALAPPDATA% et demande des autorisations d'administrateur.
Tamara Wijsman
1
Je vous remercie. J'ai téléchargé le package, en utilisant Win Vista en langue française, et même l'exécution de RegistryIndex.exe en tant qu'administrateur échoue. (Continue à dire «veuillez exécuter en tant qu'administrateur»). Avez-vous une idée pourquoi cela pourrait échouer?
Benoit
@Benoit: J'utilise du code du site Microsoft pour la partie administrateur, mais il semble que ce soit un code non international. Tous les autres codes semblent internationaux. Le problème est qu'il recherche le groupe "Administrateurs" pour rechercher les autorisations, car ce groupe est appelé différent sur votre ordinateur, il échoue donc. Cela a été résolu maintenant en utilisant new System.Security.Principal.SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null).Translate(typeof(System.Security.Principal.NTAccount)).ToString().Split('\\').Last()pour obtenir le nom du groupe.
Tamara Wijsman
1
Bonjour, le projet est-il toujours vivant? Je fais beaucoup d'ingénierie inverse la dernière fois et cela pourrait être très utile. Un nouveau lien?
Dmitry Gusarov
3

Regardez RegScanner de NirSoft . Pas un indexeur, mais il recherche dans RegEdit et il ouvrira RegEdit pour vous à un hit sélectionné, entre autres fonctionnalités intéressantes. Essayez-le certainement avant de commencer un projet de développement (à moins que vous ne vouliez faire le projet pour le faire) - vous constaterez peut-être que vous n'avez pas vraiment besoin de plus.

JRobert
la source
Comme déjà dit dans un commentaire: c'est un bon outil, mais il n'indexera rien.
Benoit
Et comme je l'ai également dit. Mais votre question, dans la toute première phrase, concerne la vitesse lente de RegEdit, pas sa technique, et en tant que tel, RegScanner répond plutôt bien à cela. Je laisse la suggestion à qui pourrait l'aider à l'avenir.
JRobert
Très bel outil! +1
Piotr Dobrogost
1

Vous pouvez exporter le registre vers un fichier texte .reg et utiliser votre éditeur préféré pour le rechercher.

Malvineous
la source
C'est en fait une bonne idée mais probablement sous-optimale car il n'y a pas d'indexation.
Benoit
Notez bien sûr que l'insertion de tous les fichiers reg d'une manière ou d'une autre dans SQLite avec FTS3 ou FTS4 activé est probablement un moyen de le faire.
Benoit
@Benoit: En fait, j'ai commencé par énumérer tout le registre dans un fichier en texte brut et la recherche avec Notepad ++ est en fait rapide en soi. J'utilise Lucene.Net pour faire l'indexation car il est spécialement écrit pour cette tâche et ne nécessite pas que je crée une solution SQL, il prend également en charge les fonctionnalités de mise en évidence (il est destiné aux moteurs de recherche, entre autres, SE utilise Lucene.net pour le moteur de recherche ici) que je vais essayer d'inclure, peut-être dans une version ultérieure. Je suppose que l'indexation / FTS donne des résultats de recherche pendant que vous tapez , mais ne l'avez pas encore essayé ...
Tamara Wijsman