fix(windows): fall back to Settings when the default-apps dialog fails

Windows 10/11 retired IApplicationAssociationRegistrationUI's advanced
dialog; it fails with 0x80070490 and the user was left with only an
error. Open Settings > Default apps on the app's registered page instead.

Refs #725

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-13 11:12:28 +03:00
1 parent 4762987fef
commit 4639546472
1 file changed
+17 -1
+17 -1
View File
@@ -230,10 +230,26 @@ mod windows_impl {
if owns_com {
CoUninitialize();
}
result
// Windows 10/11 retired the advanced-association dialog (it fails
// with 0x80070490, #725); its Settings page takes over.
result.or_else(|error| open_default_apps_settings().ok_or(error))
}
}
/// Open Settings → Default apps on this app's page (Windows 11; Windows
/// 10 shows the general page).
fn open_default_apps_settings() -> Option<String> {
let uri = format!(
"ms-settings:defaultapps?registeredAppUser={}",
APP_REGISTRY_NAME.replace(' ', "%20")
);
std::process::Command::new("explorer.exe").arg(uri).spawn().ok()?;
Some(
"Opened Settings → Default apps — choose Open CAD Studio for .dwg / .dxf there."
.to_string(),
)
}
use windows_sys::Win32::System::Registry::{
RegCloseKey, RegCreateKeyExW, RegDeleteTreeW, RegSetValueExW, HKEY, HKEY_CURRENT_USER,
KEY_WRITE, REG_OPTION_NON_VOLATILE, REG_SZ,