AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Registryeintrag mit Batch-Skript löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Registryeintrag mit Batch-Skript löschen

Ein Thema von Luckie · begonnen am 19. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 00:46
Ich will mit einem Batch-Skript einen Registryeintrag löschen. mit dem Kommandozeilen Programm regy kein Problem soweit. Jetzt will ich aber auch folgendes:

Beispiel:
Code:
HKCU
  Software
    MichaelPuff
      x
      y
      z
Es soll Schlüssel x gelöscht werden und wenn der Schlüssel MichaelPuff[i] leer ist, soll auch dieser gelöscht werden. Wie kann ich abfragen, ob dieser Schlüssel leer ist? Und wie müsste dann das Batch-Skript aussehen?

So funktioniert es nicht:
Code:
@echo off
reg query HKCU\Software\z /s
if errorlevel == 0 goto :EMPTY
if errorlevel == 1 goto :NOTEMPTY

echo errorlevel

:EMPTY
ECHO "Schlussel z ist leer"
goto END

:NOTEMPTY
ECHO "Schluessel z ist NICHT leer"
goto END

:END
pause
errorlevel ist auch 0 (erfolgreich), wenn der Schlüssel leer ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 09:58
Ich kenne das Programm regy nicht, gibt es überhaupt ein Errorlevel zurück ?

Warum möchtest du dies nicht über eine eigene Delphianwendung erledigen, ist doch einfach zu machen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 10:08
Ja


regy = registry

programm heißt reg, oder reg.exe


gib mal in deiner Konsole reg ein ... da kommen dann die möglichen Befehle zum Vorschein


vermutlich etwa so?
Code:
reg delete "HKCU\Software\MichaelPuff\x" /f
reg query "HKCU\Software\MichaelPuff"
if errorlevel == 0 goto noDelete
reg delete "HKCU\Software\MichaelPuff" /f
:noDelete
Zitat von turboPASCAL:
Warum möchtest du dies nicht über eine eigene Delphianwendung erledigen, ist doch einfach zu machen.
weil dieses schön kleine ist und 'ne exe überdimensioniert sein könnte?

Also vorher kannte ich diese Methode auch nicht.
Hab das Löschen bisher über eine .reg-Datei gelöst
und hab schon immer nach so'ner kleinen Möglichkeit gesucht auch derartige Abfragen durchführen zu können.

[add]
halt ... mußte man nicht erst die größeren errorlevel abfragen und dann die kleineren?
*mal teste*
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 10:14
Weil ich eigentlich dachte, es wäre mit einem BatchSkript einfacher und wollte mir nicht moch extra einen "Uninstaller" schreiben. Da es mit VBSkript auch nicht so schön geht, werde ich mir wohl doch einen kleinen allgemein gültigen Uninstaller schreiben, dem man nur noch das Programm als Parameter übergibt, so dass ich nicht für jedes Programm einen eigenen Uninstaller schreiben muss.

@himitsu: Auch wenn es keine Unterschlüssel gibt, ist der errorlevel leider 0, wenn ich das richtig in Erinnerung habe. Ich werde deinen Code noch mal ausprobieren.
Code:
reg delete "HKCU\Software\z\x" /f
reg query "HKCU\Software\z"
if errorlevel == 0 goto noDelete
reg delete "HKCU\Software\z" /f
:noDelete
pause
Schlüssel X wird gelöscht, aber Schlüssel z nicht, obwohl er leer ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 10:54
der errorlevel ist wohl anders zu verstehen.

nicht
0 = etwas vorhanden
1 = leer

sondern
0 = befehl erfolgreich ausgeführt
1 = fehler

du kannst höchstens prüfen ob ein schlüßel/wert existiert

Code:
reg query "HKCU\Software\MichaelPuff"
if errorlevel == 1 ... schlüssel exisiert nicht
oder besser ausgedrückt:
Fehler: konnte nicht reinsehn, da nicht existiert


Anhang:
erstellt
"HKCU\Software\MichaelPuff1"
"HKCU\Software\MichaelPuff1" > test="123xyz"
"HKCU\Software\MichaelPuff2"
prüft
und löscht die einträge wieder
Angehängte Dateien
Dateityp: txt a.bat_132.txt (2,3 KB, 3x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 11:05
Zitat von himitsu:
der errorlevel ist wohl anders zu verstehen.

nicht
0 = etwas vorhanden
1 = leer

sondern
0 = befehl erfolgreich ausgeführt
1 = fehler

du kannst höchstens prüfen ob ein schlüßel/wert existiert
Genau. Und das hilft mir nichts. Dann werde ich wohl doch nicht umhinkommen und mir einen eigenen Uninstaller schreiben müssen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 11:44
Funktioniert in jedem Windows:
Code:
@ECHO off

REG delete "HKCU\Software\MichaelPuff\x" /f
IF ERRORLEVEL 1   GOTO 1
ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x erfolgreich gelöscht
GOTO 2
:1
ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x konnte nicht gelöscht werden
:2

ECHO.
ECHO.
ECHO Es sind noch vollgende Einträge vorhanden:
REG query "HKCU\Software\MichaelPuff" /s
ECHO *end*
ECHO.
ECHO Sollen diese ebenfalls gelöscht werden? (samt HKEY_CURRENT_USER\Software\MichaelPuff)
ECHO.
ECHO Wenn nicht, dann drücken sie Strg+C zum abbrechen,
ECHO oder schließen einfach nur dieses Fenster [X].
ECHO.
PAUSE
REG delete "HKCU\Software\MichaelPuff" /f
Ich weiß nicht seit wann SET die Option /P kennt (NT, 2000, oder XP), aber damit wäre 'ne Ja/Nein-Frage möglich:
Code:
@ECHO off

REG delete "HKCU\Software\MichaelPuff\x" /f
IF ERRORLEVEL 1   GOTO 1
ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x erfolgreich gelöscht
GOTO 2
:1
ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x konnte nicht gelöscht werden
:2

ECHO.
ECHO.
ECHO Es sind noch vollgende Einträge vorhanden:
REG query "HKCU\Software\MichaelPuff" /s
ECHO *end*
ECHO.
ECHO Sollen diese ebenfalls gelöscht werden? (samt HKEY_CURRENT_USER\Software\MichaelPuff)
ECHO.
SET /p eingabe=j/n:
IF *%eingabe% == *j  GOTO 3
GOTO 4
:3
REG delete "HKCU\Software\MichaelPuff" /f
:4
[edit]
deutscher Text und Yes/No-Abfrage
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Registryeintrag mit Batch-Skript löschen

  Alt 19. Mär 2007, 17:29
Dann muss der Benutzer wieder denken und wie jedr weiß hat es damit nicht jeder Benutzer so. Ich werde mir dann wohl mal inen kleinen Uninstallerschreiben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz