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 --forceScoop
# Remove rclone
scoop uninstall rclone
# Clean cache
scoop cleanup rcloneWinGet
# Remove rclone
winget uninstall Rclone.RcloneManually
# 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:$falseRemove Windows Services
# List rclone services
Get-Service | Where-Object {$_.Name -like "*rclone*"}
# Stop and remove service
$serviceName = "RcloneMount"
Stop-Service $serviceName
sc.exe delete $serviceNameRemove WinFsp (if not needed)
If you installed WinFsp just for rclone:
# Uninstall WinFsp
winget uninstall "WinFsp"
# Or use Control Panel:
# Programs and Features → WinFsp → UninstallClean 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 -ForceTroubleshooting
"Access Denied" Errors
# Run PowerShell as Administrator
# Right-click PowerShell → Run as Administrator
# Or use this to elevate
Start-Process powershell -Verb RunAsCan'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 -ForcePATH Not Updating
# Refresh environment variables
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# Or restart PowerShell/Command Prompt
# Or restart computerHow is this guide?