Files
synology-thumbgen/fix_thumbnail_override.ps1
2025-07-01 23:27:50 -06:00

160 lines
7.7 KiB
PowerShell
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fix OneDrive Thumbnail Override - Restore Local Thumbnails
# This script disables OneDrive's cloud thumbnail providers that override custom thumbnails
Write-Host "🎯 Fixing OneDrive Thumbnail Override Issue..." -ForegroundColor Cyan
Write-Host "This will restore priority to your locally-generated thumbnails." -ForegroundColor Yellow
# Check if running as administrator
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "❌ This script requires administrator privileges. Please run as administrator." -ForegroundColor Red
exit 1
}
# 1. Disable OneDrive Files On-Demand thumbnail override
Write-Host "🔧 Disabling OneDrive Files On-Demand thumbnail override..." -ForegroundColor Green
try {
# User-level OneDrive policies
if (!(Test-Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive")) {
New-Item -Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive" -Name "DisableCloudThumbnails" -Value 1 -Type DWord
# Machine-level OneDrive policies
if (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive" -Name "DisableCloudThumbnails" -Value 1 -Type DWord
Write-Host "✅ OneDrive thumbnail override disabled" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not set OneDrive policies: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 2. Disable cloud files thumbnail provider
Write-Host "🔧 Disabling cloud files thumbnail provider..." -ForegroundColor Green
try {
# This is the key provider that overrides local thumbnails
$cloudProviderPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ThumbnailProviders\{E357FCCD-A995-4576-B01F-234630154E96}"
if (Test-Path $cloudProviderPath) {
Remove-Item -Path $cloudProviderPath -Force -Recurse
Write-Host "✅ Cloud thumbnail provider removed" -ForegroundColor Green
} else {
Write-Host " Cloud thumbnail provider not found (may already be disabled)" -ForegroundColor Blue
}
} catch {
Write-Host "⚠️ Warning: Could not remove cloud thumbnail provider: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 3. Set local thumbnail preferences
Write-Host "🔧 Configuring local thumbnail preferences..." -ForegroundColor Green
try {
# Ensure local thumbnails are enabled
if (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced")) {
New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -Value 0 -Type DWord
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbnailsOnNetworkFolders" -Value 0 -Type DWord
# Add custom registry value to prefer local thumbnails
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "UseLocalThumbnailProvider" -Value 1 -Type DWord
Write-Host "✅ Local thumbnail preferences configured" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not set local thumbnail preferences: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 4. Disable OneDrive shell icon overlays (these can interfere with thumbnails)
Write-Host "🔧 Disabling OneDrive shell overlays..." -ForegroundColor Green
$overlayPaths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive1",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive2",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive3",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive4",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive5",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive6",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive7"
)
$overlaysRemoved = 0
foreach ($overlayPath in $overlayPaths) {
try {
if (Test-Path $overlayPath) {
Remove-Item -Path $overlayPath -Force -Recurse
$overlaysRemoved++
}
} catch {
Write-Host "⚠️ Warning: Could not remove overlay $overlayPath" -ForegroundColor Yellow
}
}
Write-Host "✅ Removed $overlaysRemoved OneDrive shell overlays" -ForegroundColor Green
# 5. Clear thumbnail cache to force regeneration
Write-Host "🔧 Clearing thumbnail cache to force regeneration..." -ForegroundColor Green
try {
# Stop Explorer process
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
# Clear thumbnail cache
$thumbCachePath = "$env:LOCALAPPDATA\Microsoft\Windows\Explorer"
$thumbCacheFiles = Get-ChildItem -Path $thumbCachePath -Filter "thumbcache_*.db" -ErrorAction SilentlyContinue
foreach ($file in $thumbCacheFiles) {
try {
Remove-Item -Path $file.FullName -Force
} catch {
Write-Host "⚠️ Could not remove $($file.Name)" -ForegroundColor Yellow
}
}
# Restart Explorer
Start-Process -FilePath "explorer.exe"
Start-Sleep -Seconds 3
Write-Host "✅ Thumbnail cache cleared and Explorer restarted" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Issues clearing thumbnail cache: $($_.Exception.Message)" -ForegroundColor Yellow
Write-Host "🔄 Please restart Windows Explorer manually" -ForegroundColor Blue
}
# 6. Prevent automatic thumbnail cache deletion
Write-Host "🔧 Preventing Windows from auto-deleting thumbnail cache..." -ForegroundColor Green
try {
# Disable thumbnail cache auto-cleanup in Disk Cleanup
$autorunKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache"
if (Test-Path $autorunKey) {
Set-ItemProperty -Path $autorunKey -Name "Autorun" -Value 0 -Type DWord
}
# Also disable for WOW64 on 64-bit systems
$autorunKeyWow64 = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache"
if (Test-Path $autorunKeyWow64) {
Set-ItemProperty -Path $autorunKeyWow64 -Name "Autorun" -Value 0 -Type DWord
}
Write-Host "✅ Thumbnail cache auto-deletion disabled" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not disable thumbnail cache auto-deletion: $($_.Exception.Message)" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "🎉 OneDrive thumbnail override fix complete!" -ForegroundColor Green
Write-Host ""
Write-Host "📋 What was changed:" -ForegroundColor Cyan
Write-Host " ✓ Disabled OneDrive cloud thumbnail providers" -ForegroundColor White
Write-Host " ✓ Removed cloud files thumbnail provider" -ForegroundColor White
Write-Host " ✓ Set local thumbnail preferences" -ForegroundColor White
Write-Host " ✓ Disabled OneDrive shell overlays" -ForegroundColor White
Write-Host " ✓ Cleared and regenerated thumbnail cache" -ForegroundColor White
Write-Host " ✓ Prevented automatic thumbnail cache deletion" -ForegroundColor White
Write-Host ""
Write-Host "🔄 Please restart your computer for all changes to take effect." -ForegroundColor Yellow
Write-Host "📁 Your custom thumbnails should now have priority over OneDrive's generic icons!" -ForegroundColor Green