diff --git a/steam_helper/steam.cpp b/steam_helper/steam.cpp index eae1bc8f..b50dc4f4 100644 --- a/steam_helper/steam.cpp +++ b/steam_helper/steam.cpp @@ -1177,11 +1177,26 @@ run: if (use_shell_execute && lstrlenW(cmdline) > 10 && !memcmp(cmdline, L"link2ea://", 10 *sizeof(WCHAR))) { HDESK desktop = GetThreadDesktop(GetCurrentThreadId()); + DWORD is_unavailable, type, size; DWORD timeout = 3000; + HKEY eakey; link2ea = TRUE; if (!SetUserObjectInformationA(desktop, 1000, &timeout, sizeof(timeout))) WINE_ERR("Failed to set desktop timeout, err %u.\n", GetLastError()); + + if (!RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Electronic Arts\\EA Desktop", 0, KEY_ALL_ACCESS, &eakey)) + { + size = sizeof(is_unavailable); + if (!RegQueryValueExW(eakey, L"IsUnavailable", NULL, &type, (BYTE *)&is_unavailable, &size) + && type == REG_DWORD && is_unavailable) + { + WINE_ERR("EA Desktop\\IsUnavailable is set, clearing.\n"); + is_unavailable = 0; + RegSetValueExW(eakey, L"IsUnavailable", 0, REG_DWORD, (BYTE *)&is_unavailable, sizeof(is_unavailable)); + } + RegCloseKey(eakey); + } } hide_window = env_nonzero("PROTON_HIDE_PROCESS_WINDOW");