Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

registry





Frage

moin hab das Problem, dass ich einen einzelnen Wert in der registry löschen sollte, mit den normalen REG-files kann ich nur den ganzen Schlüssel ersetzen. habe nun gehört, dass dies mit js oder vb möglich wäre. und jetz wäre meine Frage, wie ich nur den einzelnene wert löschen kann. bin übrigens ein völliger newbie.. hab mal ein wenig gesucht und "gebastelt": var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegDelete ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\@"); Schon jetzt vielen Dank gruss

Antwort 1 von Massaraksch

Der Standardeintrag läßt sich IMHO nicht so einfach per REG-Files oder VB/J-Script löschen.

Einfach ist es jedoch mit dem Tool REG.EXE von M$. Ist z.B. enthalten in diversen Resource Kits, in den Support-Tools auf der Win2000-CD oder mal im I-Net suchen...

Der Befehl wäre dann:

reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /ve /f

Schalter /f dient zur Unterdrückung der Bestätigungsabfrage

Massaraksch

Antwort 2 von mothaFAQr

hi

hab jetz schon ne weile gesucht, aber nur infos über reg.exe gefunden. kann ich es vom server kopieren? oder kann ich es irgendwo downloaden?habe hier ca. 20 nt4 workstations, 1 nt4 server und 1 2003server(der hats drauf).die schlüssel müssen eben bei de nt4 ws's geändert werden.

thx&greez

Antwort 3 von Massaraksch

Kopier die REG.EXE des 2003-Servers in ein freigegebenes Netzverzeichnis (wo alle Zugriff haben).
Dann kannst du's in einem Script einfach so aufrufen:

\\Server\Freigabe\reg.exe delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /ve /f

Massaraksch

Antwort 4 von Undertaker

Hi,

Schlüssel, Werte und deren Inhalt können auch mit *.reg Dateien gelöscht werden:

  1. der Wert "(standard)" wird mit @ definiert:
    @=

  2. Ein Schlüssel wird wie folgt gelöscht:
    [-HKEY_CURRENT_USER\a]

  3. Ein Wert wird wie folgt gelöscht:
    "test"=-

  4. Der Inhalt eines Wertes wird je nach dessen Typ wie folgt gelöscht:

    1. Zeichenfolge (REG_SZ):
      "test"=""

    2. Zeichenfolge (REG_MULTI_SZ):
      "test"=hex(7):00,00

    3. Zeichenfolge (REG_EXPAND_SZ):
      "test"=hex(2):00,00

    4. Binärwert:
      "test"=hex:

    5. DWORD:
      "test"=dword:00000000

Gruß
Undertaker


Antwort 5 von mothaFAQr

Danke vielmals!!
hätte sogar fast geklappt!!
hab nur ein Problem: reg.exe verlangt eine advapi32.dll, und diese kann ich leider nicht in's system32 verzeichnis kopieren, da die datei von windows genutzt wird.

Antwort 6 von mothaFAQr

hi

@undertaker
dann müsste meine dritte Zeile demzufolge so aussehen:

@=-

oder sehe ich das falsch? muss den Wert des Standardschlüssels löschen.

gruss

Antwort 7 von Massaraksch

Grad nochmal probiert... Hast recht:
Die REG.EXE vom W2003-Server funktioniert nicht mit der advapi32 von NT.

Aber die REG.EXE von WinXP-Pro geht bei mir unter NT-SP6a ohne Probleme. Vielleicht findet sich in deiner Nähe ja so ein Maschinchen (oder wenigstens 'ne XP-CD, von der man sie holen kann).

@Undertaker
Das ist schon klar, aber zeig uns bitte, wie du mit einer REG-Datei den (Standard)-Eintrag entfernst.
Das geht nämlich nicht (auch nicht mit @).

Massaraksch

Antwort 8 von Undertaker

Hi,

@mothaFAQr

>> dann müsste meine dritte Zeile demzufolge so aussehen:

Nö. Die Angaben aus Antwort 4 sind für eine Registrierungsdatei (*.reg)...
So müßte die Datei aussehen:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
@=-
oder so
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
@=""


@Massaraksch

Ich kann zwar nicht sagen, ob überhaupt eine Möglichkeit gibt, den (Standard)-Eintrag zu löschen, aber mit reg.exe geht es ebenso wenig, wie mit @=- in einer Registrierungsdatei.

Schaue in die Beschreibung des Syntax zu REG DELETE:
/ve       delete the value of empty value name <no name>
Also löscht auch reg.exe "nur" den Inhalt und nicht den Wert selbst.

Ergo ist es egal, ob der Inhalt des (Standard)-Eintrags mit @=- oder @="" mittels Registrierungsdatei oder mit dem Parameter /ve von REG DELETE gelöscht wird.


Gruß
Undertaker

Antwort 9 von Massaraksch

@Undertaker
Kennst du das Sprichwort "Probieren geht über Studieren"?

Also teste es einfach und urteile dann. Die Befehlszeile hab ich ja angegeben.
Nach Ausführung erscheint beim (Standard)-Eintrag im entsprechenden Reg-Schlüssel: (Wert nicht gesetzt)
Genau das will mothaFAQr IMO erreichen. Und es geht eben nicht mit einer REG-Datei, jedoch sehr wohl mittels REG.EXE.

Massaraksch

Antwort 10 von Undertaker

Hi,

@Massaraksch
Ups. Dann habe ich mich bezüglich @="" versehen. Aber es ist sehr wohl möglich mit @=- den Zustand "(Wert nicht gesetzt)" herzustellen.

>> Also teste es einfach und urteile dann.
Gebe ich mal so retour oder auch "dito"... ;-)

Gruß
Undertaker

Antwort 11 von Massaraksch

@Undertaker
Oh Mann! Windows ist wieder mal echt anstrengend...

Muß dir nun auch (nach verschiedenen Versuchen, Kopfschütteln, Strinrunzeln und Aha!-Effekten ;-) recht geben.
Das Entfernen des Standard-Eintrags mittels REG-Datei (also mit @=-) geht... aber nur unter WinXP (evtl. auch Win2000?) aber nicht unter WinNT. Grrrr :-(

Zum Glück gehts mit der REG.EXE auch bei NT.

Also hat wie so oft jeder irgendwie recht und Windows ist doof ;-)

Massaraksch

Antwort 12 von Undertaker

Hi,

@Massaraksch
>> Also hat wie so oft jeder irgendwie recht und Windows ist doof ;-)
Full ACK

@=- habe ich unter Windows 2000 getestet. 95, 98 und ME habe ich leider gerade verfügbar.

@all
Und wer die reg.exe (V2.0.0.0) auf Windows 2000 vermisst, kann die Support-Tools von der CD installieren (SUPPORT\TOOLS\SETUP.EXE)

Gruß
Undertaker

Antwort 13 von Undertaker

Korrektur:

alt: 95, 98 und ME habe ich leider gerade verfügbar.
neu: 95, 98 und ME habe ich leider gerade nicht verfügbar.

Gruß
Undertaker

Antwort 14 von mothaFAQr

Hallo!!

So, nun hat's endlich geklappt, hab mir ne reg.exe von einem XP-Home laptop kopiert. mit der hats auch problemlos funktioniert.
wegen dem @=- kann ich eigentlich nur sagen, dass es rein theoretisch schon funktionieren würde, das Problem ist einfach, dass das nur möglich ist, wenn man den ganzen Schlüssel neu schreibt und nicht, wenn man nur einen einzelnen löschen möchte.

Vielen Dank nochmals für eure Hilfe!!

greez

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: