Forum Discussion
OneDrive desktop client does not start after complete uninstall, cleanup and reinstall
Hello,
Thank you for the very detailed description. You have already done far more troubleshooting than most users would, and the results you provided are extremely valuable.
Let me start with the most important observation:
Your fresh Windows user profile test is the key diagnostic clue
The fact that a completely new local Windows user account shows exactly the same problem tells us this is almost certainly not a profile corruption issue. Combined with your full uninstall/cleanup/reinstall, it also makes simple installation corruption less likely.
This changes the diagnostic direction. Instead of repeating cleanup and reinstall, we need to answer a more precise question:
Is OneDrive being prevented from starting, or does OneDrive start and then immediately terminate itself?
Those are two very different problems with different solutions.
What I recommend you do next
Please do not uninstall OneDrive again, delete registry keys, or create another Windows profile. Those steps have already been performed and repeating them will not add useful information.
Instead, I recommend running a non-destructive diagnostic script that collects the relevant information without changing your OneDrive configuration or your user data.
The script will:
- Check OneDrive policies, including DisableFileSyncNGSC
- Check AppLocker and WDAC / Code Integrity policies
- Check Defender and related security events
- Check WebView2 runtime presence and version
- Perform one controlled launch of OneDrive.exe using the normal desktop executable path, with no arguments
- Monitor whether the process appears, disappears, or remains running
- Capture relevant Windows events during the launch test
The diagnostic script
Please run PowerShell as Administrator and paste the following script.
It will create a folder such as:
C:\OneDriveDiag_20260911_083000
and save the collected information there.
# OneDrive diagnostic collector - non-destructive diagnostic
# Run as Administrator
# Does not modify OneDrive configuration or user data.
# It creates a diagnostic folder under C:\ and launches OneDrive.exe once for observation.
$diagRoot = "C:\OneDriveDiag_$(Get-Date -Format yyyyMMdd_HHmmss)"
New-Item -ItemType Directory -Path $diagRoot -Force | Out-Null
Start-Transcript -Path (Join-Path $diagRoot "Transcript.txt") -Force
function Save-Output {
param(
[string]$Name,
[scriptblock]$Command
)
$path = Join-Path $diagRoot "$Name.txt"
try {
& $Command *>&1 | Out-File -FilePath $path -Encoding UTF8
} catch {
"ERROR: $_" | Out-File -FilePath $path -Encoding UTF8
}
}
# 1. System information
Save-Output "01_SystemInfo" {
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber, OsArchitecture, CsName
whoami
}
# 2. OneDrive installation files
Save-Output "02_OneDriveFiles" {
$exe = "C:\Program Files\Microsoft OneDrive\OneDrive.exe"
if (Test-Path $exe) {
Get-Item $exe | Select-Object FullName, Length, LastWriteTime, VersionInfo
Get-AuthenticodeSignature $exe | Format-List *
Get-Acl $exe | Format-List *
} else {
"OneDrive.exe not found at $exe"
}
}
# 3. OneDrive processes
Save-Output "03_OneDriveProcesses" {
Get-Process OneDrive -ErrorAction SilentlyContinue |
Select-Object Id, ProcessName, StartTime, Path, Company, ProductVersion
}
# 4. OneDrive-related registry policies and settings
Save-Output "04_OneDriveRegistry" {
$paths = @(
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive",
"HKCU:\SOFTWARE\Policies\Microsoft\Windows\OneDrive",
"HKLM:\SOFTWARE\Microsoft\OneDrive",
"HKCU:\SOFTWARE\Microsoft\OneDrive",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\OneDrive",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
)
foreach ($p in $paths) {
Write-Output "=== $p ==="
if (Test-Path $p) {
Get-ItemProperty -Path $p -ErrorAction SilentlyContinue |
Format-List *
} else {
Write-Output "(not present)"
}
}
}
# 5. Installed OneDrive entries
Save-Output "05_UninstallEntries" {
Get-ItemProperty `
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" `
-ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -match "OneDrive" } |
Select-Object DisplayName, DisplayVersion, InstallLocation, UninstallString
}
# 6. AppLocker effective policy
Save-Output "06_AppLocker" {
Get-AppLockerPolicy -Effective -Xml -ErrorAction SilentlyContinue
}
# 7. WDAC / Code Integrity
Save-Output "07_WDAC" {
$ciPath = "$env:windir\System32\CodeIntegrity\CiPolicies\Active"
if (Test-Path $ciPath) {
Get-ChildItem $ciPath |
Select-Object Name, Length, LastWriteTime
} else {
"No active CI policies folder found at $ciPath"
}
Get-CimInstance `
-ClassName Win32_DeviceGuard `
-Namespace root\Microsoft\Windows\DeviceGuard `
-ErrorAction SilentlyContinue |
Format-List *
}
# 8. Defender status and preferences
Save-Output "08_Defender" {
Get-MpComputerStatus -ErrorAction SilentlyContinue | Format-List *
Get-MpPreference -ErrorAction SilentlyContinue | Format-List *
}
# 9. Event logs - Application and System filtered for OneDrive
Save-Output "09_EventLogs_Application_OneDrive" {
Get-WinEvent -LogName Application -MaxEvents 500 -ErrorAction SilentlyContinue |
Where-Object {
$_.Message -match "OneDrive" -or
$_.ProviderName -match "OneDrive"
} |
Format-List *
}
Save-Output "10_EventLogs_System_OneDrive" {
Get-WinEvent -LogName System -MaxEvents 500 -ErrorAction SilentlyContinue |
Where-Object {
$_.Message -match "OneDrive" -or
$_.ProviderName -match "OneDrive"
} |
Format-List *
}
# 11. AppLocker, Code Integrity, Defender operational logs
Save-Output "11_EventLogs_AppLocker" {
Get-WinEvent `
-LogName "Microsoft-Windows-AppLocker/EXE and DLL" `
-MaxEvents 200 `
-ErrorAction SilentlyContinue |
Format-List *
}
Save-Output "12_EventLogs_CodeIntegrity" {
Get-WinEvent `
-LogName "Microsoft-Windows-CodeIntegrity/Operational" `
-MaxEvents 200 `
-ErrorAction SilentlyContinue |
Format-List *
}
Save-Output "13_EventLogs_Defender" {
Get-WinEvent `
-LogName "Microsoft-Windows-Windows Defender/Operational" `
-MaxEvents 200 `
-ErrorAction SilentlyContinue |
Format-List *
}
# 14. WebView2 runtime
Save-Output "14_WebView2" {
$keys = @(
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}",
"HKLM:\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"
)
foreach ($k in $keys) {
Write-Output "=== $k ==="
if (Test-Path $k) {
Get-ItemProperty $k | Format-List *
} else {
Write-Output "(not present)"
}
}
Get-ChildItem `
"C:\Program Files (x86)\Microsoft\EdgeWebView\Application" `
-ErrorAction SilentlyContinue |
Select-Object Name, LastWriteTime
}
# 15. OneDrive Sync Service and scheduled tasks
Save-Output "15_OneDriveServicesAndTasks" {
Get-Service -Name "*OneDrive*" -ErrorAction SilentlyContinue |
Format-List *
Get-ScheduledTask -TaskName "*OneDrive*" -ErrorAction SilentlyContinue |
Format-List *
}
# 16. OneDrive log locations
Save-Output "16_OneDriveLogs" {
$logPaths = @(
"$env:LOCALAPPDATA\Microsoft\OneDrive\logs",
"$env:ProgramData\Microsoft OneDrive\logs"
)
foreach ($lp in $logPaths) {
Write-Output "=== $lp ==="
if (Test-Path $lp) {
Get-ChildItem $lp -Recurse -File -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending |
Select-Object -First 30 FullName, LastWriteTime, Length
} else {
Write-Output "(not present)"
}
}
}
# 17. Controlled OneDrive launch test
# Normal launch, no arguments, with event capture
Save-Output "17_OneDriveLaunchTest" {
$exe = "C:\Program Files\Microsoft OneDrive\OneDrive.exe"
if (-not (Test-Path $exe)) {
Write-Output "OneDrive.exe not found at $exe"
return
}
# Record start time for event correlation
$testStart = Get-Date
Write-Output "Test start time: $($testStart.ToString('o'))"
# Snapshot before launch
$before = @(Get-Process OneDrive -ErrorAction SilentlyContinue)
Write-Output "OneDrive processes before launch: $($before.Count)"
$before |
Select-Object Id, ProcessName, StartTime, Path |
Format-List
# Normal desktop launch - no arguments
try {
Start-Process -FilePath $exe -ErrorAction Stop
}
catch {
Write-Output "Start-Process failed: $_"
}
# Monitor for 20 seconds
$processAppeared = $false
$processDisappeared = $false
$firstSeen = $null
$lastSeen = $null
$monitorStart = Get-Date
while ((Get-Date) - $monitorStart -lt [TimeSpan]::FromSeconds(20)) {
$now = @(Get-Process OneDrive -ErrorAction SilentlyContinue)
if ($now.Count -gt 0) {
if (-not $processAppeared) {
$processAppeared = $true
$firstSeen = Get-Date
Write-Output "OneDrive process first detected at $($firstSeen.ToString('o')). Count: $($now.Count)"
$now |
Select-Object Id, ProcessName, StartTime, Path |
Format-List
}
$lastSeen = Get-Date
}
else {
if ($processAppeared -and -not $processDisappeared) {
$processDisappeared = $true
Write-Output "OneDrive process no longer detected at $(Get-Date -Format o)"
}
}
Start-Sleep -Milliseconds 500
}
# Final state
$after = @(Get-Process OneDrive -ErrorAction SilentlyContinue)
Write-Output "OneDrive processes at end of test: $($after.Count)"
$after |
Select-Object Id, ProcessName, StartTime, Path |
Format-List
# Interpret and summarize
if (-not $processAppeared) {
Write-Output "RESULT: No OneDrive.exe process appeared during the test window."
Write-Output " Likely direction: Policy / AppLocker / WDAC / EDR / Windows execution problem."
}
elseif ($processDisappeared) {
Write-Output "RESULT: OneDrive.exe appeared and then terminated."
Write-Output " Investigate internal initialization and external termination causes."
}
else {
Write-Output "RESULT: OneDrive.exe remained running but no UI/tray was confirmed by this script."
Write-Output " Likely direction: UI/session/WebView2/shell/startup issue."
}
# Capture events around the test window
$testEnd = Get-Date
Write-Output "Test end time: $($testEnd.ToString('o'))"
Write-Output "`n--- Application log events (OneDrive-related) in test window ---"
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
StartTime = $testStart
EndTime = $testEnd
} -ErrorAction SilentlyContinue |
Where-Object {
$_.Message -match 'OneDrive' -or
$_.ProviderName -match 'OneDrive'
} |
Format-List *
Write-Output "`n--- System log events (OneDrive-related) in test window ---"
Get-WinEvent -FilterHashtable @{
LogName = 'System'
StartTime = $testStart
EndTime = $testEnd
} -ErrorAction SilentlyContinue |
Where-Object {
$_.Message -match 'OneDrive' -or
$_.ProviderName -match 'OneDrive'
} |
Format-List *
Write-Output "`n--- Event ID 1000 (Application Error) in test window ---"
Get-WinEvent -FilterHashtable @{
LogName = 'Application'
ID = 1000
StartTime = $testStart
EndTime = $testEnd
} -ErrorAction SilentlyContinue |
Format-List *
Write-Output "`n--- Code Integrity / AppLocker / Defender operational events in test window ---"
$logs = @(
'Microsoft-Windows-CodeIntegrity/Operational',
'Microsoft-Windows-AppLocker/EXE and DLL',
'Microsoft-Windows-Windows Defender/Operational'
)
foreach ($log in $logs) {
Write-Output "`n=== $log ==="
Get-WinEvent -FilterHashtable @{
LogName = $log
StartTime = $testStart
EndTime = $testEnd
} -ErrorAction SilentlyContinue |
Format-List *
}
}
Stop-Transcript
Write-Host "Diagnostics saved to: $diagRoot"After the script finishes, please look at 17_OneDriveLaunchTest.txt.
It will help distinguish these three situations:
Result | Likely direction |
No OneDrive.exe process appears at all | Something is preventing OneDrive from starting. Policy, AppLocker, WDAC, and security software are common causes, but a Windows execution or dependency problem can produce the same result. Further evidence is needed to tell these apart. |
OneDrive.exe appears and then terminates | OneDrive starts and then terminates. This may be internal initialization failure, or an external component terminating it. Both possibilities should be investigated. |
OneDrive.exe remains running but no UI/tray appears | A different problem, potentially involving the UI/session, WebView2, shell, or startup integration. |
The script also checks DisableFileSyncNGSC.
If that value is set to 1, it is a strong indication of a policy that disables OneDrive synchronization. In a corporate environment, the important next step is to determine who is enforcing that setting — Group Policy, Intune, or another management mechanism — before changing anything. A centrally managed policy may simply recreate the value if it is removed locally.
The script does not modify your OneDrive configuration or your data in:
E:\OneDrive
That is what i can say: it does not change OneDrive settings or touch your user data. It does create a diagnostic folder under C:\ and it does launch OneDrive.exe once as part of the observation test. That launch is intentional — it is what allows us to see whether the process appears, exits, or stays running — but it is not intended to change your configuration.
At this point I would not perform another uninstall, registry cleanup, or repair. The next step should be based on the diagnostic evidence.
My answers are voluntary and without guarantee!
Hope this will help you.
Was the answer useful? Mark as best response and like it!
This will help all forum participants.