From 403da6134747540f904af9a855f8034679dec9c5 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 19 May 2026 19:22:50 +0300 Subject: [PATCH] [SHCORE] Apply some fixes that we have in shlwapi --- dll/win32/shcore/main.c | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dll/win32/shcore/main.c b/dll/win32/shcore/main.c index ecfd5693134..79e8949b295 100644 --- a/dll/win32/shcore/main.c +++ b/dll/win32/shcore/main.c @@ -2392,11 +2392,28 @@ LONG WINAPI SHQueryInfoKeyW(HKEY hkey, DWORD *subkeys, DWORD *subkey_max, DWORD BOOL WINAPI IsOS(DWORD feature) { DWORD platform, majorv, minorv; +#ifdef __REACTOS__ + OSVERSIONINFOEXA osvi; + + osvi.dwOSVersionInfoSize = sizeof(osvi); + if (!GetVersionExA((OSVERSIONINFOA*)&osvi)) + { + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); + if (!GetVersionExA((OSVERSIONINFOA*)&osvi)) + { + ERR("GetVersionEx failed\n"); + return FALSE; + } + osvi.wProductType = VER_NT_WORKSTATION; + osvi.wSuiteMask = 0; + } +#else OSVERSIONINFOA osvi; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); if (!GetVersionExA(&osvi)) return FALSE; +#endif majorv = osvi.dwMajorVersion; minorv = osvi.dwMinorVersion; @@ -2472,7 +2489,11 @@ BOOL WINAPI IsOS(DWORD feature) FIXME("(OS_DOMAINMEMBER) What should we return here?\n"); return TRUE; case OS_ANYSERVER: +#ifdef __REACTOS__ + ISOS_RETURN(osvi.wProductType > VER_NT_WORKSTATION); +#else ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT); +#endif case OS_WOW6432: { BOOL is_wow64; @@ -2487,8 +2508,29 @@ BOOL WINAPI IsOS(DWORD feature) FIXME("(OS_TABLETPC) What should we return here?\n"); return FALSE; case OS_SERVERADMINUI: +#ifdef __REACTOS__ + { + DWORD value = FALSE, size = sizeof(value); + HKEY hKey = NULL; + + RegOpenKeyExW( + HKEY_CURRENT_USER, + L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", + 0, + MAXIMUM_ALLOWED, + &hKey); + + if (hKey) + { + SHQueryValueExW(hKey, L"ServerAdminUI", NULL, NULL, &value, &size); + RegCloseKey(hKey); + } + ISOS_RETURN(value); + } +#else FIXME("(OS_SERVERADMINUI) What should we return here?\n"); return FALSE; +#endif case OS_MEDIACENTER: FIXME("(OS_MEDIACENTER) What should we return here?\n"); return FALSE;