Uninstalling

Windows

How to completely remove rclone from your Windows system

Uninstall rclone from Windows

Here's how to completely remove rclone from Windows, including all configuration and scheduled tasks.

Remember to backup your config file before uninstalling.

By installation method

Chocolatey

# Run as Administrator
choco uninstall rclone

# Remove any leftover files
choco uninstall rclone --force

Scoop

# Remove rclone
scoop uninstall rclone

# Clean cache
scoop cleanup rclone

WinGet

# Remove rclone
winget uninstall Rclone.Rclone

Manually

# Stop all rclone processes
Get-Process | Where-Object {$_.ProcessName -like "*rclone*"} | Stop-Process -Force

# Delete the executable (adjust path as needed)
Remove-Item "C:\rclone\rclone.exe"

# Or if in Program Files
Remove-Item "C:\Program Files\rclone\rclone.exe"

# Remove from PATH (see below)

Complete removal (script)

Save this as uninstall-rclone.ps1 and run as Administrator:

# uninstall-rclone.ps1 - Complete rclone removal for Windows
# Run as Administrator

Write-Host "=== Rclone Uninstaller for Windows ===" -ForegroundColor Cyan
Write-Host ""

# Function to check if running as Administrator
function Test-Administrator {
    $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
    return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}

if (-not (Test-Administrator)) {
    Write-Host "This script must be run as Administrator!" -ForegroundColor Red
    Write-Host "Right-click and select 'Run as Administrator'"
    pause
    exit
}

# Kill any running rclone processes
Write-Host "Stopping rclone processes..." -ForegroundColor Yellow
Get-Process | Where-Object {$_.ProcessName -like "*rclone*"} | Stop-Process -Force

# Function to find rclone executable
function Find-Rclone {
    $paths = @(
        "$env:USERPROFILE\rclone\rclone.exe",
        "C:\rclone\rclone.exe",
        "C:\Program Files\rclone\rclone.exe",
        "C:\Program Files (x86)\rclone\rclone.exe",
        "$env:LOCALAPPDATA\rclone\rclone.exe"
    )
    
    # Check PATH
    $rclonePath = (Get-Command rclone -ErrorAction SilentlyContinue).Source
    if ($rclonePath) {
        return $rclonePath
    }
    
    # Check common locations
    foreach ($path in $paths) {
        if (Test-Path $path) {
            return $path
        }
    }
    
    return $null
}

# Remove rclone executable
$rclonePath = Find-Rclone
if ($rclonePath) {
    Write-Host "Found rclone at: $rclonePath" -ForegroundColor Green
    $rcloneDir = Split-Path $rclonePath
    
    # Remove directory if it's a dedicated rclone directory
    if ($rcloneDir -like "*rclone*") {
        Remove-Item $rcloneDir -Recurse -Force
        Write-Host "✓ Removed rclone directory" -ForegroundColor Green
    } else {
        Remove-Item $rclonePath -Force
        Write-Host "✓ Removed rclone executable" -ForegroundColor Green
    }
} else {
    Write-Host "rclone executable not found" -ForegroundColor Yellow
}

# Remove from PATH
Write-Host "Removing from PATH..." -ForegroundColor Yellow
$path = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPath = ($path.Split(';') | Where-Object { $_ -notlike '*rclone*' }) -join ';'
if ($path -ne $newPath) {
    [Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")
    Write-Host "✓ Removed from system PATH" -ForegroundColor Green
}

$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newUserPath = ($userPath.Split(';') | Where-Object { $_ -notlike '*rclone*' }) -join ';'
if ($userPath -ne $newUserPath) {
    [Environment]::SetEnvironmentVariable("Path", $newUserPath, "User")
    Write-Host "✓ Removed from user PATH" -ForegroundColor Green
}

# Remove configuration
$configPath = "$env:APPDATA\rclone"
if (Test-Path $configPath) {
    Write-Host "Found configuration at: $configPath" -ForegroundColor Yellow
    $response = Read-Host "Remove configuration files? (y/n)"
    if ($response -eq 'y') {
        # Offer backup
        $backup = Read-Host "Create backup first? (y/n)"
        if ($backup -eq 'y') {
            $backupPath = "$env:USERPROFILE\rclone-backup-$(Get-Date -Format 'yyyyMMdd-HHmmss').zip"
            Compress-Archive -Path $configPath -DestinationPath $backupPath
            Write-Host "✓ Backup saved to: $backupPath" -ForegroundColor Green
        }
        
        Remove-Item $configPath -Recurse -Force
        Write-Host "✓ Removed configuration" -ForegroundColor Green
    }
}

# Remove cache
$cachePaths = @(
    "$env:LOCALAPPDATA\rclone",
    "$env:TEMP\rclone-*"
)

foreach ($cachePath in $cachePaths) {
    if (Test-Path $cachePath) {
        Remove-Item $cachePath -Recurse -Force -ErrorAction SilentlyContinue
    }
}
Write-Host "✓ Removed cache files" -ForegroundColor Green

# Remove scheduled tasks
Write-Host "Checking for scheduled tasks..." -ForegroundColor Yellow
$tasks = Get-ScheduledTask | Where-Object {$_.TaskName -like "*rclone*"}
foreach ($task in $tasks) {
    Unregister-ScheduledTask -TaskName $task.TaskName -Confirm:$false
    Write-Host "✓ Removed task: $($task.TaskName)" -ForegroundColor Green
}

# Remove Windows services
$services = Get-Service | Where-Object {$_.Name -like "*rclone*"}
foreach ($service in $services) {
    Stop-Service $service.Name -Force
    sc.exe delete $service.Name
    Write-Host "✓ Removed service: $($service.Name)" -ForegroundColor Green
}

# Remove context menu entries (if any)
$regPaths = @(
    "HKCU:\Software\Classes\Directory\shell\rclone",
    "HKCU:\Software\Classes\*\shell\rclone"
)

foreach ($regPath in $regPaths) {
    if (Test-Path $regPath) {
        Remove-Item $regPath -Recurse -Force
        Write-Host "✓ Removed context menu entry" -ForegroundColor Green
    }
}

Write-Host ""
Write-Host "================================" -ForegroundColor Cyan
Write-Host "Rclone uninstall complete!" -ForegroundColor Green
Write-Host ""

# Verify removal
if (Get-Command rclone -ErrorAction SilentlyContinue) {
    Write-Host "⚠️ Warning: rclone still found in PATH" -ForegroundColor Yellow
    Write-Host "Please restart your terminal or computer" -ForegroundColor Yellow
} else {
    Write-Host "✓ rclone successfully removed from system" -ForegroundColor Green
}

Manual removal steps

Remove Configuration

# Remove config directory
Remove-Item "$env:APPDATA\rclone" -Recurse -Force

# Or just the config file
Remove-Item "$env:APPDATA\rclone\rclone.conf"

Remove from PATH

# Remove from system PATH
$path = [Environment]::GetEnvironmentVariable("Path", "Machine")
$newPath = ($path.Split(';') | Where-Object { $_ -notlike '*rclone*' }) -join ';'
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")

# Remove from user PATH
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newUserPath = ($userPath.Split(';') | Where-Object { $_ -notlike '*rclone*' }) -join ';'
[Environment]::SetEnvironmentVariable("Path", $newUserPath, "User")

Remove Scheduled Tasks

# List rclone tasks
Get-ScheduledTask | Where-Object {$_.TaskName -like "*rclone*"}

# Remove specific task
Unregister-ScheduledTask -TaskName "Rclone Backup" -Confirm:$false

# Remove all rclone tasks
Get-ScheduledTask | Where-Object {$_.TaskName -like "*rclone*"} | Unregister-ScheduledTask -Confirm:$false

Remove Windows Services

# List rclone services
Get-Service | Where-Object {$_.Name -like "*rclone*"}

# Stop and remove service
$serviceName = "RcloneMount"
Stop-Service $serviceName
sc.exe delete $serviceName

Remove WinFsp (if not needed)

If you installed WinFsp just for rclone:

# Uninstall WinFsp
winget uninstall "WinFsp"

# Or use Control Panel:
# Programs and Features → WinFsp → Uninstall

Clean Registry (Advanced)

# Remove any rclone registry entries
# Be careful with registry edits!

# Check for entries
Get-ChildItem -Path "HKCU:\Software" | Where-Object {$_.Name -like "*rclone*"}
Get-ChildItem -Path "HKLM:\Software" | Where-Object {$_.Name -like "*rclone*"}

# Remove if found (example)
Remove-Item "HKCU:\Software\Rclone" -Recurse -Force

Troubleshooting

"Access Denied" Errors

# Run PowerShell as Administrator
# Right-click PowerShell → Run as Administrator

# Or use this to elevate
Start-Process powershell -Verb RunAs

Can't Delete Files

# File in use - find what's using it
$file = "C:\rclone\rclone.exe"
$process = Get-Process | Where-Object {$_.Path -eq $file}
if ($process) {
    Stop-Process $process -Force
}

# Then delete
Remove-Item $file -Force

PATH Not Updating

# Refresh environment variables
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

# Or restart PowerShell/Command Prompt
# Or restart computer

How is this guide?