From 1ab01450fdec1691bf804e42d56652abf9a7099e Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 19 Oct 2005 18:29:51 +0000 Subject: [PATCH] Try using mozctlx's path if there is no registered Mozilla directory. --- dlls/mshtml/nsembed.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 3944333c68..079e18fff1 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -153,19 +153,36 @@ static BOOL get_mozctl_path(PRUnichar *gre_path) {'S','o','f','t','w','a','r','e','\\','M','o','z','i','l','l','a',0}; static const WCHAR wszBinDirectoryPath[] = {'B','i','n','D','i','r','e','c','t','o','r','y','P','a','t','h',0}; + static const WCHAR wszMozCtlClsidKey[] = + {'C','L','S','I','D','\\', + '{','1','3','3','9','B','5','4','C','-','3','4','5','3','-','1','1','D','2', + '-','9','3','B','9','-','0','0','0','0','0','0','0','0','0','0','0','0','}','\\', + 'I','n','p','r','o','c','S','e','r','v','e','r','3','2',0}; res = RegOpenKeyW(HKEY_LOCAL_MACHINE, wszMozCtlKey, &hkey); - if(res != ERROR_SUCCESS) { - TRACE("Could not open key %s\n", debugstr_w(wszMozCtlKey)); - return FALSE; + if(res == ERROR_SUCCESS) { + res = RegQueryValueExW(hkey, wszBinDirectoryPath, NULL, &type, (LPBYTE)gre_path, &size); + if(res == ERROR_SUCCESS) + return TRUE; + else + ERR("Could not get value %s\n", debugstr_w(wszBinDirectoryPath)); } - res = RegQueryValueExW(hkey, wszBinDirectoryPath, NULL, &type, (LPBYTE)gre_path, &size); - if(res != ERROR_SUCCESS) { - ERR("Could not get value %s\n", debugstr_w(wszBinDirectoryPath)); - return FALSE; + res = RegOpenKeyW(HKEY_CLASSES_ROOT, wszMozCtlClsidKey, &hkey); + if(res == ERROR_SUCCESS) { + res = RegQueryValueExW(hkey, NULL, NULL, &type, (LPBYTE)gre_path, &size); + if(res == ERROR_SUCCESS) { + WCHAR *ptr; + if((ptr = strrchrW(gre_path, '\\'))) + ptr[1] = 0; + return TRUE; + }else { + ERR("Could not get value of %s\n", debugstr_w(wszMozCtlClsidKey)); + } } + TRACE("Could not find Mozilla ActiveX Control\n"); + return TRUE; }