Funktionreferenz


RegDelete

Beschreibung anzeigen in

Löscht einen Schlüssel oder einen Wert aus der Registry.

RegDelete ( "keyname" [, "valuename"] )

Parameter

keyname Der zu löschende Registry-Schlüssel.
valuename [optional] Der zu löschende Wert.

Rückgabewert

Erfolg: 1.
Spezial: 0 wenn der Schlüssel/Wert nicht existiert.
Fehler: 2 wenn das Löschen des Schlüssels/Wertes einen Fehler verursacht hat und setzt das @error Flag auf ungleich null.
@error: 1 = der angegebene Schlüssel kann nicht geöffnet werden
 2 = es ist nicht möglich auf den Hauptschlüssel zuzugreifen
 3 = es kann von extern (remote) nicht auf die Registry zugegriffen werden
-1 = wenn der gewünschte Wert nicht gelöscht werden konnte
-2 = wenn der gewünschte Schlüssel bzw. Wert nicht gelöscht werden konnte

Bemerkungen

Ein Registry-Schlüssel muss mit "HKEY_LOCAL_MACHINE" ("HKLM"), "HKEY_USERS" ("HKU"), "HKEY_CURRENT_USER" ("HKCU"), "HKEY_CLASSES_ROOT" ("HKCR") oder "HKEY_CURRENT_CONFIG" ("HKCC") beginnen.

"HK" oder "HKEY" bedeutet "Handle (to a) KEY".

Um einen Schlüssel oder Wert auf einem 64-Bit Windows zu löschen, muss dem Begriff "HK..." das Suffix "64" angehängt werden (z. B. "HKLM64").

Registry-Zweige:
64 Bit: HKLM\SOFTWARE\…
32 Bit: HKLM\SOFTWARE\WOW6432Node\…

AutoIt-Skript: Ausführungs-Modus AutoIt-Skript: Angabe im Quellcode Registrierungs-Editor: Verwendeter Zweig
32 Bit HKLM\SOFTWARE\… HKLM\SOFTWARE\WOW6432Node\…
32 Bit HKLM64\SOFTWARE\… HKLM\SOFTWARE\…
32 Bit HKLM\SOFTWARE\WOW6432Node\… HKLM\SOFTWARE\WOW6432Node\…
64 Bit HKLM\SOFTWARE\… HKLM\SOFTWARE\…
64 Bit HKLM64\SOFTWARE\… HKLM\SOFTWARE\…
64 Bit HKLM\SOFTWARE\WOW6432Node\… HKLM\SOFTWARE\WOW6432Node\…

"HKLM64" ist also nur für 32-Bit-AutoIt-Skripte (x86) wichtig und auch nur dann, wenn von dort aus nicht in "WOW6432Node" geschrieben werden soll.

Details siehe https://docs.microsoft.com/de-de/troubleshoot/windows-client/deployment/view-system-registry-with-64-bit-windows

Um mit dem (Standard)-Wert zu operieren, muss man "" (einen leeren String) als Wertname verwenden.

Werte aus der Registry zu löschen, ist potentiell gefährlich - also Vorsicht!

Es ist möglich, Registries im Netzwerk zu bearbeiten. Dazu ist "\\Computername\Schlüsselname" zu verwenden. Um diese Funktion verwenden zu können, muss man die entsprechenden Zugriffsrechte besitzen.

Verwandte Funktionen

RegEnumKey, RegEnumVal, RegRead, RegWrite

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Prüft, ob der Registryschlüssel bereits existiert, damit das System es Benutzers nicht beschädigt wird.
    RegRead("HKEY_CURRENT_USER\Software\AutoIt_Example", "Key1")

    ; @error wird auf ungleich 0 gesetzt, wenn ein Registryschlüssel gelesen wird der nicht existiert.
    If Not @error Then
        MsgBox($MB_SYSTEMMODAL, "", "Ein Fehler ist aufgetreten, dass der temporäre Registryschlüssel ""AutoIt_Example"" bereits existiert.")
        Return False
    EndIf

    ; Schreibt einen einzelnen REG_SZ Wert in den Schlüssel "Key1".
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt_Example", "Key1", "REG_SZ", "Dies ist ein Beispiel von RegWrite")

    ; Schreibt den REG_MULTI_SZ Wert von "Zeile 1" und "Zeile 2". Es iwrd immer ein Zeilenvoschubzeichen angehängt wenn ein REG_MULTI_SZ Wert geschrieben wird.
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt_Example", "Key2", "REG_MULTI_SZ", "Zeile 1" & @LF & "Zeile 2" & @LF)

    ; Schreibt den REG_MULTI_SZ Wert von "Zeile 1". Es iwrd immer ein Zeilenvoschubzeichen angehängt wenn ein REG_MULTI_SZ Wert geschrieben wird.
    RegWrite("HKEY_CURRENT_USER\Software\AutoIt_Example", "Key3", "REG_MULTI_SZ", "Zeile 1" & @LF)

    ; Zeigt eine Nachricht um manuell zu dem Registryschlüssel zu navigieren.
    MsgBox($MB_SYSTEMMODAL, "", "Es ist RegEdit.exe zu öffnen und zu dem Registryschlüssel ""HKEY_CURRENT_USER\Software\AutoIt_Example"" zu navigieren.")

    ; Löscht den temporären Registryschlüssel.
    RegDelete("HKEY_CURRENT_USER\Software\AutoIt_Example")
EndFunc   ;==>Example

Beispiel 2

#include <MsgboxConstants.au3>

;~ #RequireAdmin

; erfordert Admin-Rechte
Local $sKey = "HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Active Setup Temp Folders"
Local $iRegWrite = RegWrite($sKey, "test", "REG_DWORD", "1")
If $iRegWrite = 0 Then
    MsgBox($MB_ICONWARNING + $MB_TOPMOST, "erfordert Admin-Rechte", "Kann nicht erstellt werden" & @CRLF & @CRLF & $sKey & @CRLF & @CRLF & 'Return = ' & $iRegWrite & @CRLF & '@error = ' & @error & @TAB & '@extended = ' & @extended & ' (0x' & Hex(@extended) & ')') ;### Debug MSGBOX
Else
    MsgBox($MB_TOPMOST, "RegWrite", $sKey & @CRLF & @CRLF & "erfolgreich erstellt")

    ; Registry bereinigen
    RegDelete($sKey, "test")
EndIf

; Erfordert keine Admin-Rechte
$sKey = "HKEY_CURRENT_USER\Software\Test"
$iRegWrite = RegWrite("HKEY_CURRENT_USER\Software\Test", "test", "REG_DWORD", "1")
If $iRegWrite = 0 Then
    ; Sollte nicht vorkommen
    MsgBox($MB_ICONERROR + $MB_TOPMOST, "AutoIt Fehler", "Kann nicht erstellt werden" & @CRLF & @CRLF & $sKey & @CRLF & @CRLF & 'Return = ' & $iRegWrite & @CRLF & '@error = ' & @error & @TAB & '@extended = ' & @extended & ' (0x' & Hex(@extended) & ')')
Else
    If IsAdmin() Then
        MsgBox($MB_TOPMOST, "RegWrite", $sKey & " erfolgreich erstellt")
    Else
        ConsoleWrite("- " & $sKey & " erfolgreich erstellt" & @CRLF)
    EndIf

    ; Registry bereinigen
    RegDelete($sKey, "test")
    RegDelete($sKey)
EndIf