Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch soll Registry durchsuchen...

Empfohlene Antworten

Veröffentlicht

Hi -

hoffe es kann mir jemand helfen...

Ich muss ein Batch-Script schreiben, dass die Registry nach bestimmten

Schlüsseln einer Software durchsucht. Wenn das Batch einen Schlüssel

findet, soll dieser im Fenster mit Registry-Pfad angezeigt werden...

Hab keine Ahnung wie ich das machen soll....

also spontan würde ich bahupten, dass dir nix anderes übrig bleibt, als die registry daten zu exportieren, dann das exportierte file zu durchsuchen und die ergebnisse auszugeben. bei änderungen die datei wieder zu importieren und dann zu löschen:


//Exportieren der Registry
regedit /E exportfile.reg "HKEY_USERS"
/*der letze parameter ist nicht zwingend und ist anzugeben, wenn man nur den entsprechenden Subkey exportieren will*/

//Reimport
regedit /S exportfile.reg
/* das "/S" ist zwar nicht erforderlich, aber bei einer batch schon, da es die Abfrage verhindert, ob man sich wirklich sicher ist*/
[/PHP]

Gut - das funktioniert soweit...

Wie kann ich jetzt eine Schleife realisieren, die nach mehrer Schlüssel in der

Registry sucht und diese dann im CMD fenster anzeigt?

Kann ich die Registry-Keys (sind mir bekannt) auch in ein extra File (txt)

schreiben und dieses von der Batch dann auslesen lassen ob die darin

installierten Keys noch vorhanden sind?

Danke für die Hilfe....


//sowas in der art??
FOR /F %i IN (export.reg) DO IF /I "%i"=="KEY" echo %i
[/PHP]

Also auf der schiene musst du weiterarbeiten. Allerdings lass dir gesagt sein, dass ein batch IF beim Stringvergleich keine Wildcards unterstützt.

Außerdem: Such mal bei google. Befehlsübersichten zu Batch dateine gibts auch im netz, z.B. hier oder hier

Hallo -

so sieht es im Moment aus. Aber irgendwie blick ich da noch nicht so durch...

Hab mal ein paar Kommentare dazu geschrieben.

---------------------------------------------------------------------------

@ECHO off

CLS

ECHO ---------------------------------------------------------------------

ECHO Aktuelle Registry-Eintraege

ECHO ---------------------------------------------------------------------

ECHO.

ECHO.

ECHO.

ECHO Die Registry wird nun in das File 'Export_Reg.txt' exportiert...

REM Exportieren der Registry

REM regedit /E Export_Reg.txt

ECHO.

ECHO Die Datei 'Export_Reg.txt' wird nun nach den Keys durchsucht...

ECHO.

ECHO Die folgenden Eintraege befinden sich noch in der Registry:

REM Suchen nach einer Zeichenfolge in der Datei 'Export_Reg.txt'

REM -> Das mit dem Find ist funktioniert - sieht aber nicht gut aus

REM müsste da jeden Schlüssel so definieren und die Ausgabe ist

REM auch nicht so toll...

REM FIND "KEY1" /N Export_Reg.txt

REM FIND "KEY2" /N Export_Reg.txt

REM -> Die Schleife hört sich schon besser an, aber funktioniert noch nicht

REM so richtig bei mir. Wo muss ich die Schlüssel definieren damit diese

für den Suchlauf gelesen werden.

FOR /F %i IN (Export_Reg.txt) DO IF /I "%i"=="KEY" echo "%i"

ECHO.

ECHO.

ECHO.

ECHO.

PAUSE

REM -----------------------EOF----------------------

puh...

ich bin genr bereit dir zu helfen, aber ich bin auch nicht grade batch-programmer (wieos sollte man auch ;) ). haste schonmal darüber nachgedacht das ganze in einer Hochsprache umzusetzen. da kann man das ergebnis dann auch schöner formatieren.

aber zurück zum thema:

eine liste von suchbegriffen könntest du in einer anderen textdatei speichern.


//1. Inhalt der keys.txt:
suchbegriff1
suchbegriff2
...
[/PHP]

Dann die Batch:

[PHP]
....
FOR /F %i in (keys.txt) DO
//durchsucht die keys.txt zeile für zeile und schtreibt die werte in i
FIND "%i" /N regexport.txt
//das wäre dann schonmal ne option. muss natürlich in einer Zeile stehen
....

//2. option:
FOR /F %i in (keys.txt) DO
FOR /F %j IN (Export_Reg.txt) DO IF /I "%j"=="%i" echo "%j" > result.txt
//sucht alle keys aus der keys.txt in der export_reg.txt und schreibt bei //übereinstimmung die Zeilen der reg-text-datei in die Datei result.txt

//Danach kannste ja dann die Zeilen der result.txt so formatiert ausgebn, wie //du es gerne hättest

Hallo -

danke für Deine Hilfe, ich blicks glaub echt nicht...

Habs jetzt so (REM bedeutet ja auskommentiert) und mich somit

für Option 3 entschieden...

Aber des läuft irgendwie nicht

********************************************************

@ECHO off

CLS

REM Variablen-Deklaration:

SET i

SET j

ECHO Die Registry wird nun in das File 'Export_Reg.txt' exportiert...

REM Exportieren der Registry

REM regedit /E Export_Reg.txt

ECHO.

ECHO Die Datei 'Export_Reg.txt' wird nun nach Komponenten durchsucht...

ECHO.

ECHO Die folgenden Eintraege befinden sich noch in der Registry:

REM Option 1:

REM Suchen nach einer Zeichenfolge in der Datei 'Export_Reg.txt'

REM FIND "KEY1" /N Export_Reg.txt

REM FIND "KEY2" /N Export_Reg.txt

REM Option 2:

REM FOR /F %i in (Keys.txt) DO FIND "%i" /N Export_Reg.txt

REM -> Durchsucht die Keys.txt zeile für zeile und Schreibt die werte in i

REM -> das wäre dann schonmal ne option. muss natürlich in einer Zeile stehen

REM option 3:

FOR /F %i in (Keys.txt) DO FOR /F %j IN (Export_Reg.txt) DO IF /I "%j"=="%i" echo "%j" > result.txt

REM -> Sucht alle keys aus der keys.txt in der export_reg.txt und schreibt bei

REM -> Übereinstimmung die Zeilen der reg-text-datei in die Datei Result.txt

REM -> Danach kannste ja dann die Zeilen der result.txt so formatiert ausgebn, wie

REM -> du es gerne hättest

tröste dich bei mir gehts auch nicht.

ehrlich gesagt bin ich überfragt. wäre so nicht schlecht gewesen.

aber ich hab auch noch nie mehrere batch befehle so verschachtelt. ich weiß nicht, ob es da was zu beachten gilt

der witz ist:

folgendes funktioniert:

-----------------------------------------------

1.

FOR /F %i IN (keys.txt) echo %i >> a.txt

2.

FOR /F %i IN (keys.txt) echo %i

-----------------------------------------------

aber das hier geht dann nicht mehr

-----------------------------------------------

1.

FOR /F %i IN (export.txt) echo %i >> a.txt

2.

FOR /F %i IN (export.txt) echo %i

-----------------------------------------------

diese dumme for-schleife geht den export.txt nicht durch.

und ich hab auch herausgefunden warum. der regedit export befehl erzeugt ja keine textdatei nach dem ansi-zeichensatz, auch wenn du sie .txt nennst.

die exportierte datei ist im unicode. sie muss erst einmal im ANSI-Format abgespeichert werden. dann gehts.

Ok das hier hab ich hier gefunden


@Echo Off
echo UniCode to ANSI converter for TXT.
md ~ANSI
for %%a in (export.txt) do type "%%a">"~ANSI\%%a"
for %%a in (export.txt) do attrib -r -h -s "%%a"
cd ~ANSI
for %%a in (export.txt) do move /y "%%a" ..
cd..
rd ~ANSI
[/PHP]

dies Batch-Datei konvertiert die angegebene textdatei von unicode zu ansi. was genau da passiert kann ich dir auch net sagen, aber es funktioniert.

  • 3 Jahre später...

Hallo,

ich bin schon seit einigen Tagen am rumprobieren.

Bin so langsam am zweifeln ob das alles überhaupt so funktioniert wie ich mir das vorstelle.

ich lese die komplette registry aus und möchte dann mit stichworten nach bestimmten schlüsseln suchen.. zB:

Stichwort: Python

und ausgeben soll er mir dann beispielsweise: HKEY_LOCAL_MACHINE\SOFTWARE\Python

Grund warum ich das so brauche...

ich möchte mit stichworten schlüssel suchen, da ich nicht alle schlüssel auswendig weiß und möchte dann alle schlüssel die was mit python zutun haben automatisch löschen...

gibt es diese möglichkeit überhaupt?

lg

ryoorox

edit: alles mit batch, sollte ich noch dazu sagen!

Hi ryoorox,

wegen deinem Problem mit der Registry - per Batch - zu analysieren und entsprechende Keys anschließend zu löschen.

Hier ein Lösung an welcher ich in letzter Zeit gebastelt habe, war gar nicht so einfach ;)

[Hinweis]

Das Skript manipuliert die Windows-Registrierungsdatei, Daten werden unwiderruflich gelöscht.

Das Skript muss aus Sicherheitsgründen noch angepasst werden damit Daten endgültig gelöscht werden.

Wer das Skript dementsprechend ändert ist sich bewusst was er macht!

reg_analyzer.bat


@echo off
setlocal ENABLEDELAYEDEXPANSION
CLS

rem ******************************************************************
rem ** Einstellungen koennen hier vorgenommen werden ! START **
rem ******************************************************************
set suchdatei=suche.txt
set regfile=reg.tmp
set trefferdatei=treffer.txt
set tmptreffer=treffer.tmp
rem ******************************************************************
rem ** Einstellungen koennen hier vorgenommen werden ! ENDE **
rem ******************************************************************

if EXIST %trefferdatei% (del %trefferdatei%)
if EXIST %tmptreffer% (del %tmptreffer%)
if EXIST %regfile% (del %regfile%)

echo.
echo ??????????????????????????????????????????????????????????????????
echo ?? Durchsucht Windows-Registry nach gewunschten Suchbegriffen ??
echo ??????????????????????????????????????????????????????????????????

for /F "delims=/" %%a in ('ver') do (
if NOT "%%a" == "Microsoft Windows [Version 6.0.6001]" (
echo.
echo ??????????????????????????????????????????????????????????????????
echo ?? Achtung: Dieses Skript basiert auf Windows Vista SP1 ??
echo ?? ??
echo ?? Sie scheinen eine andere Betriebssystemversion zu verwenden. ??
echo ?? Es wird empfohlen das Skript NICHT auszufuehren. ??
echo ??????????????????????????????????????????????????????????????????
echo ?? Schliessen Sie das Fenster einfach um das Skript zu beenden, ??
echo ?? anderfalls wird das Skript die Ausfuehrung fortsetzen. ??
echo ??????????????????????????????????????????????????????????????????
PAUSE
)
)

echo.
echo Suchbegriffe sind:

for /F "" %%i in (%suchdatei%) do echo - '%%i'

echo.
echo ??????????????????????????????????????????????????????????????????
set regkey=HKLM

:next

if EXIST %regfile% (del %regfile%)
echo.

echo Exportiere Registry-Struktur !regkey! ...
reg export !regkey! %cd%\%regfile%

if NOT EXIST %regfile% (
echo.
echo ??????????????????????????????????????????????????????????????????
echo ?? Achtung: Datei %regfile% konnte nicht erstellt werden? ??
echo ?? ??
echo ?? - Schreibberechtigung in %cd%\ vorhanden? ??
echo ?? - Berechtigung zum oeffnen des Registry-Editors? ??
echo ??????????????????????????????????????????????????????????????????
echo.
goto Ende:
)

echo Suche in !regkey! laeuft...

for /f %%a in (%suchdatei%) do (
FIND /I "%%a" %regfile% >> %tmptreffer%
)

set MinEinTreffer=0
for /f "tokens=1,2 delims=/" %%a in (%tmptreffer%) do (
set Wert=%%a

if "!Wert:~0,1!" == "[" (
echo "!Wert:~1,-1!" >> %trefferdatei%
set MinEinTreffer=1
)

)
set Wert=
echo Suche in !regkey! abgeschlossen.

if "!regkey!" == "HKLM" (
set regkey=HKCU
goto Next:
)
if "!regkey!" == "HKCU" (
set regkey=HKCR
rem *** HKEY_CURRENT_ROOT (HKCR) kann aus unbekannten Grund
rem *** nicht ausgewertet werden, vllt. bin ich auch
rem *** zu ungeduldig aber 5 Minuten warten ist zu lang
rem goto Next:
)
if "!regkey!" == "HKCR" (
set regkey=HKU
goto Next:
)
if "!regkey!" == "HKU" (
set regkey=HKCC
goto Next:
)

echo.
echo Suche komplett abgeschlossen.
echo.

del %regfile%
del %tmptreffer%

if "!MinEinTreffer!" == "1" (
echo Trefferdatei wurde geoeffnet.
notepad %trefferdatei%

echo.
echo ???????????????????????????????????????????????????????????????????????????
echo ?? ??
echo ?? WARNUNG: Registry-Einträge werden geloescht, weiter auf eigene Gefahr ??
echo ?? ??
echo ?? WARNUNG: Registry-Einträge werden geloescht, weiter auf eigene Gefahr ??
echo ?? ??
echo ?? WARNUNG: Registry-Einträge werden geloescht, weiter auf eigene Gefahr ??
echo ?? ??
echo ???????????????????????????????????????????????????????????????????????????
echo.
Pause

rem for /F "delims=@" %%a in (%trefferdatei%) do (
rem echo Loesche '%%a'...
rem reg delete %%a /f
)
) ELSE (
echo Keine Treffer gefunden!
)

echo.
echo ??????????????????????????????????????????????????????????????????
echo ?? Durchsuchen der Windows-Registry abgeschlossen ??
echo ??????????????????????????????????????????????????????????????????
:Ende

set suchdatei=
set regfile=
set trefferdatei=
set tmptreffer=
set Wert=
set MinEinTreffer=
set regkey=
[/PHP]

suche.txt

[PHP]
Python

(Pro Zeile ein Suchbegriff; Groß/Kleinschreibung ist egal)

Hoffe das es Fehlerfrei ist, bei mir hat es jedenfalls ohne Probleme funktioniert.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.