From e61ea2d79f96a96314f0135ad6cf820b6ae57b5d Mon Sep 17 00:00:00 2001 From: Andras Timar Date: Sat, 4 May 2013 09:48:27 -0700 Subject: fdo#54087 refactor/fix browser plugin detection on Windows Former code did not find the Firefox plugin, if it was registered under HKEY_CURRENT_USER. Therefore the checkbox state was not preserved in Tools - Options - Internet - Browser Plug-in. Change-Id: I9ae2a7dae1501500d7ea7cb42517605219450af3 --- cui/source/dialogs/winpluginlib.cxx | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) (limited to 'cui/source') diff --git a/cui/source/dialogs/winpluginlib.cxx b/cui/source/dialogs/winpluginlib.cxx index ce4ab24ee8c0..539137576c8e 100644 --- a/cui/source/dialogs/winpluginlib.cxx +++ b/cui/source/dialogs/winpluginlib.cxx @@ -33,37 +33,18 @@ extern "C" { int lc_isInstalled(const char* realFilePath) { - HKEY hKeySoftware; - HKEY hMozillaPlugins; - HKEY hStarOffice; + HKEY hLibreOffice; char sSoPath[SO_PATH_SIZE]; char sPluginPath[SO_PATH_SIZE]; LONG ret; - ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, KEY_READ, &hKeySoftware); + ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\MozillaPlugins\\@sun.com/npsopluginmi;version=1.0", 0, KEY_READ, &hLibreOffice); if(ret != ERROR_SUCCESS){ - ret = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE", 0, KEY_READ, &hKeySoftware); + ret = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\MozillaPlugins\\@sun.com/npsopluginmi;version=1.0", 0, KEY_READ, &hLibreOffice); if(ret != ERROR_SUCCESS){ return -1; } } - ret = RegOpenKeyEx(hKeySoftware, "MozillaPlugins", 0, KEY_READ, &hMozillaPlugins); - if(ret != ERROR_SUCCESS){ - RegCloseKey(hKeySoftware); - if( ret == ERROR_FILE_NOT_FOUND) - return 1; - else - return -1; - } - ret = RegOpenKeyEx(hMozillaPlugins, "@sun.com/npsopluginmi;version=1.0", 0, KEY_READ, &hStarOffice); - if(ret != ERROR_SUCCESS){ - RegCloseKey(hKeySoftware); - RegCloseKey(hMozillaPlugins); - if( ret == ERROR_FILE_NOT_FOUND) - return 1; - else - return -1; - } if((realFilePath == NULL) || (strlen(realFilePath) == 0) || (strlen(realFilePath) >= SO_PATH_SIZE)) ret = -1; @@ -76,7 +57,7 @@ int lc_isInstalled(const char* realFilePath) if(ret == 0){ DWORD dType = REG_SZ; DWORD dSize = SO_PATH_SIZE; - ret = RegQueryValueEx (hStarOffice, "Path", NULL, &dType , (LPBYTE) sPluginPath, &dSize); + ret = RegQueryValueEx (hLibreOffice, "Path", NULL, &dType , (LPBYTE) sPluginPath, &dSize); if(ret == ERROR_SUCCESS){ if(strcmp(sPluginPath, sSoPath) == 0) ret = 0; @@ -88,9 +69,7 @@ int lc_isInstalled(const char* realFilePath) } else ret = -1; - RegCloseKey(hStarOffice); - RegCloseKey(hMozillaPlugins); - RegCloseKey(hKeySoftware); + RegCloseKey(hLibreOffice); return ret; } -- cgit v1.2.3