Registrierungs-Editor sperren und freigeben

Zeigt, ob der Registrierungs-Editor (regedit) für den aktuellen Benutzer gesperrt ist, und sperrt oder entsperrt ihn per Menü (Richtlinie DisableRegistryTools). Weist auf zusätzliche, per Gruppenrichtlinie gesetzte Sperren hin. Keine Administratorrechte nötig.

registry-editor-sperre.cmd 3,6 KB · läuft unter Windows 10/11 · aktualisiert am 17.10.2026 · 4 Downloads

SHA-256: 67cdc707eb6b3ed21c167ca5adb2e56d759eeafb77aa61200a4e919c8a0172b0

Code

So sieht die Datei aus, die Sie herunterladen (77 Zeilen). Die Kommentare oben im Skript erklären, was es tut.

registry-editor-sperre.cmd
<# : Friederich-IT - Registrierungs-Editor sperren oder freigeben
@echo off
setlocal
chcp 65001 >nul
title Registrierungs-Editor sperren / freigeben - Friederich-IT
set "FIT_SELF=%~f0"
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "iex ([IO.File]::ReadAllText($env:FIT_SELF,[Text.Encoding]::UTF8))"
exit /b %errorlevel%
#>
# ==========================================================================
#  Registrierungs-Editor sperren / freigeben       Version 2.0, Oktober 2026
#  https://friederich-it.de/downloads
#
#  Sperrt oder entsperrt den Registrierungs-Editor (regedit) für den
#  angemeldeten Benutzer und zeigt den aktuellen Status an.
#  Registry: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
#            Wert DisableRegistryTools (2 = gesperrt, nicht vorhanden = frei)
#  Läuft ohne Administratorrechte. Funktioniert auch, wenn regedit
#  bereits gesperrt ist. Ersetzt das alte VBScript (stürzte beim ersten
#  Start ab, wenn der Wert noch nicht existierte).
# ==========================================================================
$ErrorActionPreference = 'Stop'
try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch {}
$pfad = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System'
$name = 'DisableRegistryTools'

function Get-Sperre {
    try { return [int](Get-ItemProperty -Path $pfad -Name $name -ErrorAction Stop).$name } catch { return 0 }
}
function Show-Status {
    $w = Get-Sperre
    Write-Host '  Status: ' -NoNewline
    switch ($w) {
        0 { Write-Host 'Registrierungs-Editor ist freigegeben' -ForegroundColor Green }
        1 { Write-Host 'GESPERRT (Editor und stiller Import von .reg-Dateien)' -ForegroundColor Red }
        2 { Write-Host 'GESPERRT (Editor; .reg-Dateien lassen sich still importieren)' -ForegroundColor Red }
        default { Write-Host "unbekannter Wert $w" -ForegroundColor Yellow }
    }
    $gp = $false
    try { $gp = $null -ne (Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System' -Name $name -ErrorAction Stop).$name } catch {}
    if ($gp) { Write-Host '  Hinweis: Zusätzlich ist eine Sperre für alle Benutzer gesetzt (HKLM, meist per Gruppenrichtlinie).' -ForegroundColor Yellow }
}

while ($true) {
    Clear-Host
    Write-Host ''
    Write-Host '  Registrierungs-Editor sperren / freigeben' -ForegroundColor Cyan
    Write-Host '  =========================================' -ForegroundColor Cyan
    Write-Host ''
    Show-Status
    Write-Host ''
    Write-Host '  [1] Sperren'
    Write-Host '  [2] Freigeben'
    Write-Host '  [0] Beenden'
    Write-Host ''
    Write-Host '  Auswahl: ' -NoNewline
    $k = [Console]::ReadKey($true).KeyChar
    Write-Host $k
    try {
        switch ($k) {
            '1' {
                if (-not (Test-Path $pfad)) { New-Item -Path $pfad -Force | Out-Null }
                New-ItemProperty -Path $pfad -Name $name -PropertyType DWord -Value 2 -Force | Out-Null
                Write-Host '  Gesperrt. Gilt sofort für neu gestartete regedit-Fenster.' -ForegroundColor Green
            }
            '2' {
                if ((Get-Sperre) -ne 0) { Remove-ItemProperty -Path $pfad -Name $name -Force }
                Write-Host '  Freigegeben.' -ForegroundColor Green
            }
            '0' { exit }
            default { Write-Host '  Bitte 1, 2 oder 0 drücken.' -ForegroundColor Yellow }
        }
    } catch { Write-Host "  Fehler: $($_.Exception.Message)" -ForegroundColor Red }
    Write-Host '  Taste drücken ...' -ForegroundColor DarkGray
    [void][Console]::ReadKey($true)
}