Claude Desktop VM Service fails when app installed on non-C: drive (WindowsApps junction)
Description
Claude Desktop's VM service (CoworkVMService / cowork-svc.exe) fails to start when the app is installed on a non-system drive (e.g., E:\) via Microsoft Store app storage settings.
Error
Claude VM Service error: signature verification initialization failed: failed to get service executable path: The system cannot find the path specified.
Root Cause
When users configure Windows to install Store apps on a different drive (e.g., E:\), Windows creates a junction point at:
C:\Program Files\WindowsApps\Claude_x.x.xxxx.0_x64__pzs8sxrjxfjjc
→ E:\WindowsApps\Claude_x.x.xxxx.0_x64__pzs8sxrjxfjjc
The service registry ImagePath points to the C:\Program Files\WindowsApps\... path. While the executable file is accessible through the junction, cowork-svc.exe fails to resolve its own executable path at runtime during signature verification initialization — it cannot follow the junction/reparse point to find itself.
Environment
- OS: Windows 11 Pro 25H2 (Build 26200.8037)
- Claude Desktop: v1.1.9310.0 (MSIX package)
- App install location:
E:\WindowsApps\(via Settings → System → Storage → Advanced → Where new content is saved)
Steps to Reproduce
- Set Windows new app install location to a non-C: drive (e.g.,
E:\) - Install Claude Desktop from Microsoft Store
- Observe
CoworkVMServicefails to start - Check logs at
C:\ProgramData\Claude\Logs\cowork-service.log
Workaround
Manually update the service ImagePath in the registry to point to the actual path on the non-system drive:
# Run as Administrator
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CoworkVMService" -Name "ImagePath" -Value '"E:\WindowsApps\Claude_x.x.xxxx.0_x64__pzs8sxrjxfjjc\app\resources\cowork-svc.exe"'
Restart-Service CoworkVMService
Note: This workaround needs to be reapplied after every app update, as the version path changes and the registry is re-registered with the junction path.
Suggested Fix
When cowork-svc.exe resolves its own executable path for signature verification, it should resolve junction/reparse points to the final target path (e.g., using GetFinalPathNameByHandle or equivalent).
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗