X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fbase%2Fapplications%2Frapps%2Finstalled.cpp;h=9f07a922f30249033cc576a9f3ab83a545116213;hp=f0c7e55eef3a708a9d6f9d37b50cdf62c15a14a2;hb=928e1c0ba3ac018e26fa0d573941a992f4c00b10;hpb=5582a642efd4a10a9565c1b58256874f27b4c331 diff --git a/reactos/base/applications/rapps/installed.cpp b/reactos/base/applications/rapps/installed.cpp index f0c7e55eef3..9f07a922f30 100644 --- a/reactos/base/applications/rapps/installed.cpp +++ b/reactos/base/applications/rapps/installed.cpp @@ -28,50 +28,59 @@ GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR lpString) return FALSE; } + + BOOL -IsInstalledApplicationEx(LPWSTR lpRegName, BOOL IsUserKey, REGSAM keyWow) +IsInstalledApplication(LPCWSTR lpRegName, BOOL IsUserKey, REGSAM keyWow) { - DWORD dwSize = MAX_PATH, dwType; - WCHAR szName[MAX_PATH]; - WCHAR szDisplayName[MAX_PATH]; - HKEY hKey, hSubKey; - INT ItemIndex = 0; + HKEY hKey = NULL; + BOOL IsInstalled = FALSE; - if (RegOpenKeyExW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, + if ((RegOpenKeyExW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, keyWow | KEY_ENUMERATE_SUB_KEYS, - &hKey) != ERROR_SUCCESS) + &hKey) == ERROR_SUCCESS) \ + && FindRegistryKeyByName(hKey, keyWow, lpRegName, NULL)) { - return FALSE; + IsInstalled = TRUE; } + RegCloseKey(hKey); + return IsInstalled; +} + +BOOL +InstalledVersion(LPWSTR szVersionResult, UINT iVersionResultSize, LPCWSTR lpRegName, BOOL IsUserKey, REGSAM keyWow) +{ + DWORD dwSize = MAX_PATH; + DWORD dwType = REG_SZ; + WCHAR szVersion[MAX_PATH]; + HKEY hKey, hSubKey; + BOOL HasVersion = FALSE; + iVersionResultSize = 0; - while (RegEnumKeyExW(hKey, ItemIndex, szName, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) + if (RegOpenKeyExW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, + L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, keyWow | KEY_ENUMERATE_SUB_KEYS, + &hKey) == ERROR_SUCCESS) { - if (RegOpenKeyExW(hKey, szName, 0, keyWow | KEY_READ, &hSubKey) == ERROR_SUCCESS) + if (FindRegistryKeyByName(hKey, keyWow, lpRegName, &hSubKey)) { - - dwType = REG_SZ; - dwSize = sizeof(szDisplayName); + dwSize = sizeof(szVersion); if (RegQueryValueExW(hSubKey, - L"DisplayName", - NULL, - &dwType, - (LPBYTE)szDisplayName, - &dwSize) == ERROR_SUCCESS) + L"DisplayVersion", + NULL, + &dwType, + (LPBYTE) szVersion, + &dwSize) == ERROR_SUCCESS) { - if (wcscmp(szDisplayName, lpRegName) == 0) - { - RegCloseKey(hSubKey); - RegCloseKey(hKey); - return TRUE; - } + szVersionResult = szVersion; + iVersionResultSize = dwSize; + HasVersion = TRUE; } } RegCloseKey(hSubKey); - dwSize = MAX_PATH; - ItemIndex++; } + RegCloseKey(hKey); - return FALSE; + return HasVersion; }