How to Enable the Remote Registry Service using PowerShell

The Power of Remote Registry Management

When managing a massive fleet of Windows servers or employee workstations, a system administrator occasionally needs to modify a specific registry key across dozens of machines simultaneously—perhaps to disable a vulnerable legacy protocol like SMBv1, or to push a custom software configuration.

While you can use PowerShell’s Invoke-Command to execute code remotely, older administrative tools and third-party auditing scanners (like Nessus) rely heavily on connecting directly to the target machine’s registry over the network. By default, Microsoft disables the Remote Registry service on modern versions of Windows for security reasons. To use these tools, you must first enable and start the service.

Step 1: Check the Current Status

Before modifying the service, it’s good practice to verify its current state. The system name for the Remote Registry service is RemoteRegistry.

Open an elevated PowerShell prompt and run:

Get-Service -Name RemoteRegistry

You will likely see that the Status is Stopped. If you attempt to simply start it using Start-Service, it will likely fail, because the Startup Type is set to Disabled by default.

Step 2: Change the Startup Type

Before you can turn the service on, you must configure Windows to allow it to run.

Use the Set-Service cmdlet to change the startup behavior from Disabled to Automatic (if you want it to run permanently) or Manual (if you only need it temporarily for an audit).

Set-Service -Name RemoteRegistry -StartupType Automatic

The command executes silently. The service is now allowed to run.

Step 3: Start the Service

Now that the service is configured correctly, you can initiate the background daemon.

Start-Service -Name RemoteRegistry

You can verify that it is running successfully by executing the Get-Service command again. The status should now read Running.

Enabling Remote Registry Across Multiple Servers

If you need to enable this service on five different database servers simultaneously, you can leverage PowerShell’s remote execution capabilities (assuming WinRM is already enabled in your domain).

First, define your array of servers:

$Servers = @("DB-01", "DB-02", "DB-03", "DB-04", "DB-05")

Next, use Invoke-Command to push the configuration script block to all servers in parallel:

Invoke-Command -ComputerName $Servers -ScriptBlock {
    Set-Service -Name RemoteRegistry -StartupType Automatic
    Start-Service -Name RemoteRegistry
}

Security Warning

Leaving the Remote Registry service running permanently is a recognized security risk, as it provides another potential attack vector for lateral movement if an attacker breaches your network. Unless you have a specific monitoring tool that requires it 24/7, best practice dictates that you should stop and disable the service immediately after completing your administrative tasks.

Set-Service -Name RemoteRegistry -StartupType Disabled
Stop-Service -Name RemoteRegistry -Force

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.