bool nsWindowsShellService::IsDefaultClientVista(uint16_t aApps, bool* aIsDefaultClient) { IApplicationAssociationRegistration* pAAR; HRESULT hr = CoCreateInstance (CLSID_ApplicationAssociationRegistration, NULL, CLSCTX_INPROC, IID_IApplicationAssociationRegistration, (void**)&pAAR); if (SUCCEEDED(hr)) { BOOL isDefaultMail = true; BOOL isDefaultNews = true; if (aApps & nsIShellService::MAIL) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_MAIL, &isDefaultMail); if (aApps & nsIShellService::NEWS) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_NEWS, &isDefaultNews); *aIsDefaultClient = isDefaultNews && isDefaultMail; pAAR->Release(); return true; } return false; }
bool nsWindowsShellService::IsDefaultClientVista(PRUint16 aApps, bool* aIsDefaultClient) { #if MOZ_WINSDK_TARGETVER >= MOZ_NTDDI_LONGHORN IApplicationAssociationRegistration* pAAR; HRESULT hr = CoCreateInstance (CLSID_ApplicationAssociationRegistration, NULL, CLSCTX_INPROC, IID_IApplicationAssociationRegistration, (void**)&pAAR); if (SUCCEEDED(hr)) { BOOL isDefaultMail = true; BOOL isDefaultNews = true; if (aApps & nsIShellService::MAIL) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_MAIL, &isDefaultMail); if (aApps & nsIShellService::NEWS) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_NEWS, &isDefaultNews); *aIsDefaultClient = isDefaultNews && isDefaultMail; pAAR->Release(); return PR_TRUE; } #endif return PR_FALSE; }
PRBool nsWindowsShellService::IsDefaultClientVista(PRUint16 aApps, PRBool* aIsDefaultClient) { #if !defined(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS) IApplicationAssociationRegistration* pAAR; HRESULT hr = CoCreateInstance (CLSID_ApplicationAssociationRegistration, NULL, CLSCTX_INPROC, IID_IApplicationAssociationRegistration, (void**)&pAAR); if (SUCCEEDED(hr)) { PRBool isDefaultMail = PR_TRUE; PRBool isDefaultNews = PR_TRUE; if (aApps & nsIShellService::MAIL) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_MAIL, &isDefaultMail); if (aApps & nsIShellService::NEWS) pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME_NEWS, &isDefaultNews); *aIsDefaultClient = isDefaultNews && isDefaultMail; pAAR->Release(); return PR_TRUE; } #endif return PR_FALSE; }
bool IsDefaultBrowser() { IApplicationAssociationRegistration* pAAR; HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration, NULL, CLSCTX_INPROC, IID_IApplicationAssociationRegistration, (void**)&pAAR); if (FAILED(hr)) return false; BOOL res = FALSE; hr = pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE, APP_REG_NAME, &res); Log(L"QueryAppIsDefaultAll: %d", res); if (!res) { pAAR->Release(); return false; } // Make sure the Prog ID matches what we have LPWSTR registeredApp; hr = pAAR->QueryCurrentDefault(L"http", AT_URLPROTOCOL, AL_EFFECTIVE, ®isteredApp); pAAR->Release(); Log(L"QueryCurrentDefault: %X", hr); if (FAILED(hr)) return false; Log(L"registeredApp=%s", registeredApp); bool result = !wcsicmp(registeredApp, kDefaultMetroBrowserIDPathKey); CoTaskMemFree(registeredApp); if (!result) return false; // If the registry points another browser's path, // activating the Metro browser will fail. So fallback to the desktop. CStringW selfPath; GetDesktopBrowserPath(selfPath); selfPath.MakeLower(); CStringW browserPath; GetDefaultBrowserPath(browserPath); browserPath.MakeLower(); return selfPath == browserPath; }