Czy istnieje oprogramowanie, które może indeksować zawartość rejestru w celu szybkiego wyszukiwania? [Zamknięte]


16

Wyszukiwanie w rejestrze systemu Windows może być ve ------ ry ------ lo ---- ng.

Czy jest dostępne jakieś narzędzie, które może indeksować zawartość całego rejestru lub zawartości pojedynczego gałęzi, dzięki czemu dostępne są szybkie wyszukiwania? (na przykład generowanie bazy danych SQLite z włączonym FTS3 lub FTS4 do wyszukiwania pełnotekstowego)

Dziękuję Ci.

PS. Nie chcę RegScanner ani narzędzi, które za każdym razem wykonują nowe, liniowe wyszukiwanie. Chcę indeksatora , dzięki któremu wyszukiwanie może być natychmiastowe. Zobacz komentarze do pytania.




2
@Benoit: Bardzo mi to przeszkadza, spróbuję dziś napisać taką aplikację.
Tamara Wijsman,

1
@TomWij: Czy będzie komercyjny? Otwarte źródło? Czy mogę go przetestować w wersji beta :-)? To świetny projekt i popieram go.
Benoit,

1
@TomWij: Nie jestem pewien, co miałeś na myśli przez „to działa dobrze”, ale zauważ, że faktycznie otworzyłeś klucz ControlSet001(a może ControlSet002lub inny), nie CurrentControlSet . CurrentControlSetjest rzeczywiście związek z tymi kluczami, a to nie jest możliwe, aby zobaczyć link samo przy użyciu zwykłych funkcji .NET; potrzebujesz funkcji takiej jak NtOpenKeyotwarcie rzeczywistego dowiązania symbolicznego zamiast celu. Spójrz tutaj i tutaj .
user541686,

Odpowiedzi:


11

Wprowadzenie

Napisałem aplikację, która indeksuje rejestr oraz inną aplikację, która przeszukuje ten indeks.

Daje to prawie natychmiastowe wyniki podczas pisania, pozwala to na szybkie wyszukiwanie kilku rzeczy.

Zobacz prezentację wideo , pokazuje, jak szybkie są wyniki, trzy różne wyszukiwania i dwa skoki rejestru.

Indeks

wprowadź opis zdjęcia tutaj

Do celów indeksowania używam Lucene.net , czy to nie brzmi znajomo ?

Pozwala mi to na indeksowanie danych bezpośrednio z rejestru, bez użycia bazy danych SQL do przechowywania danych. Ponadto, Lucene.net ma wiele opcji indeksowania i funkcji wyszukiwania, które są przydatne!

Ten indeks będzie przechowywany w %LOCALAPPDATA%\RegistryIndexrozmiarze około 160 MB.

Aplikacja 1: RegistryIndex.exe

Będzie to zrzucić cały rejestru do folderu indeksu wspomniano powyżej,
należy pamiętać, że HKEY_CLASSES_ROOTi HKEY_CURRENT_USERsą ule skrótów, a tym samym nie indeksowane.

Chociaż działa bez ciebie, możesz chcieć skonfigurować go tak, aby automatycznie działał jako administrator .

Gdy aplikacja pokaże, że jest to zrobione, możesz zamknąć okno i w ten sposób utworzono indeks.

Aplikacja 2: RegistrySearch.exe

Ten jest prosty, wpisz coś do wyszukiwania w polu tekstowym powyżej, a wyniki pojawią się.

Wpisanie niepoprawnej składni spowoduje żółte pole tekstowe i błąd na pasku stanu na dole.

Obsługiwane są specjalne funkcje wyszukiwania, takie jak operacje na znakach wieloznacznych i operacje logiczne, zobacz Składnia zapytania, aby uzyskać więcej informacji. Należy pamiętać, że określenie pól nie będzie działać w bieżącym ustawieniu, system wyszuka konkatenację tokenizowanej ścieżki i wartości. Zatem A \ B \ C o wartości DEF staje się ABCDE F.

Przykład wyszukiwania dokładnej ścieżki: "HKEY_LOCAL_MACHINE SOFTWARE"

Wyszukiwanie jest ograniczone do 1000 wyników.

Kliknij dwukrotnie wpis, aby przejść do niego w rejestrze, używa to regjump.exe z SysInternals .
Aby przejść do pracy, musisz uruchomić program wyszukiwania jako administrator , po raz pierwszy zaakceptuj umowę EULA.

Przyszłe funkcje

Zobacz bieżącą wersję jako podgląd techniczny, działa, ale może wymagać refaktoryzacji i makijażu.

  • Ikona aplikacji i wersja
  • Konfiguracja
  • Podkreślanie wyników
  • Pakiet instalatora
  • Monitoruj usługę (śledzi zmiany w rejestrze za pomocą haka i aktualizuje indeks)

Zmiany

  • 21/03: Teraz przechowuje w %LOCALAPPDATA%, prosi o Administratorspozwolenie.

Pobieranie

Kliknij tutaj, aby pobrać , rozpakuj wszystkie pliki do preferowanej lokalizacji, utwórz skróty do RegistryIndex / Search.exe.

Źródło

Nie jest zaciemniony, więc aby sprawdzić IL, możesz użyć Odbłyśnika, jeśli chcesz.

Mogę zwolnić źródło, gdy zostanie zrefaktoryzowane z nieco większą liczbą funkcji, być może uda mi się umieścić go w CodePlex.


2
Byłoby lepiej, gdyby Twoja aplikacja używała% LOCALAPPDATA%, a nie% APPDATA%.
edusysadmin

1
@edusysadmin: Dostosowano, teraz zapisuje się w% LOCALAPPDATA% i pyta o uprawnienia administratora.
Tamara Wijsman,

1
Dziękuję Ci. Pobrałem pakiet, używając Win Vista w języku francuskim, a nawet uruchomiłem RegistryIndex.exe, ponieważ administrator zawiedzie. (Ciągle mówi „uruchom jako administrator”). Czy masz pomysł, dlaczego to może zawieść?
Benoit,

@Benoit: Używam kodu z witryny Microsoft dla części administracyjnej, ale wydaje się, że jest to kod międzynarodowy. Cały inny kod wygląda na międzynarodowy. Problem polega na tym, że wyszukuje grupę „Administratorzy” w celu wyszukania uprawnień, ponieważ ta grupa nazywa się inaczej na twoim komputerze, dlatego nie działa. Zostało to rozwiązane teraz za pomocą, new System.Security.Principal.SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null).Translate(typeof(System.Security.Principal.NTAccount)).ToString().Split('\\').Last()aby uzyskać nazwę grupy.
Tamara Wijsman,

1
Cześć, czy projekt wciąż żyje? Ostatnio robię wiele inżynierii wstecznej i może to być bardzo przydatne. Jakieś nowe łącze?
Dmitrij Gusarow

3

Spójrz na RegScanner NirSoft . Nie jest to indeksator, ale znacznie wyprzedza RegEdit i otworzy RegEdit dla wybranego hitu, między innymi fajnymi funkcjami. Zdecydowanie wypróbuj go przed rozpoczęciem projektu programistycznego (chyba że chcesz go wykonać w celu jego wykonania) - może się okazać, że tak naprawdę nie potrzebujesz więcej.


Jak już powiedziano w komentarzu: jest to dobre narzędzie, ale niczego nie indeksuje.
Benoit

I tak jak powiedziałem. Ale twoje pytanie, w pierwszym zdaniu, dotyczy niskiej prędkości RegEdita, a nie jego techniki, i dlatego RegScanner radzi sobie raczej dobrze. Zostawię sugestię komukolwiek, kto może pomóc w przyszłości.
JRobert

Bardzo fajne narzędzie! +1
Piotr Dobrogost

1

Możesz wyeksportować rejestr do pliku tekstowego .reg i przeszukać go za pomocą swojego ulubionego edytora.


To jest naprawdę fajny pomysł, ale prawdopodobnie nieoptymalny, ponieważ nie ma indeksacji.
Benoit,

Zauważ, że oczywiście wstawienie całego pliku reg w jakiś sposób do SQLite z włączonym FTS3 lub FTS4 jest prawdopodobnie sposobem na zrobienie tego.
Benoit

@Benoit: Właściwie zacząłem od wyliczenia całego rejestru do pliku tekstowego, a wyszukiwanie za pomocą Notepad ++ jest samo w sobie szybkie. Korzystam z Lucene.Net do indeksowania, ponieważ jest on specjalnie napisany do tego zadania i nie wymaga ode mnie rozwiązania SQL, obsługuje także podświetlanie funkcji (jest przeznaczony dla wyszukiwarek, btw, SE używa Lucene.net dla wyszukiwarki tutaj), którą postaram się uwzględnić, być może w późniejszej wersji. Wydaje mi się, że indeksowanie / FTS daje wyniki wyszukiwania podczas pisania , ale jeszcze tego nie próbowałem ...
Tamara Wijsman,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.