diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c index 693999a289f..dc716ace643 100644 --- a/dlls/ole32/compobj.c +++ b/dlls/ole32/compobj.c @@ -1315,8 +1315,6 @@ HRESULT WINAPI CoGetClassObject( typedef HRESULT (CALLBACK *DllGetClassObjectFunc)(REFCLSID clsid, REFIID iid, LPVOID *ppv); DllGetClassObjectFunc DllGetClassObject; - HKEY key; - char buf[200]; WINE_StringFromCLSID((LPCLSID)rclsid,xclsid); @@ -1351,20 +1349,6 @@ HRESULT WINAPI CoGetClassObject( return hres; } - if (((CLSCTX_LOCAL_SERVER) & dwClsContext) - && !((CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) & dwClsContext)) - return create_marshalled_proxy(rclsid,iid,ppv); - - - - /* remote servers not supported yet */ - if ( ((CLSCTX_REMOTE_SERVER) & dwClsContext) - && !((CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) & dwClsContext) - ){ - FIXME("CLSCTX_REMOTE_SERVER not supported!\n"); - return E_NOINTERFACE; - } - if ((CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) & dwClsContext) { HKEY key; char buf[200]; @@ -1400,31 +1384,17 @@ HRESULT WINAPI CoGetClassObject( } - /* Finally try out of process */ - /* out of process and remote servers not supported yet */ + /* Next try out of process */ if (CLSCTX_LOCAL_SERVER & dwClsContext) { - memset(ProviderName,0,sizeof(ProviderName)); - sprintf(buf,"CLSID\\%s\\LocalServer32",xclsid); - if (((hres = RegOpenKeyExA(HKEY_CLASSES_ROOT, buf, 0, KEY_READ, &key)) != ERROR_SUCCESS) || - ((hres = RegQueryValueExW(key,NULL,NULL,NULL,(LPBYTE)ProviderName,&ProviderNameLen)), - RegCloseKey (key), - hres != ERROR_SUCCESS)) - { - hres = REGDB_E_CLASSNOTREG; - } - else - { - /* CO_E_APPNOTFOUND if no exe */ - FIXME("CLSCTX_LOCAL_SERVER %s registered but not yet supported!\n",debugstr_w(ProviderName)); - hres = E_ACCESSDENIED; - } + return create_marshalled_proxy(rclsid,iid,ppv); } + /* Finally try remote */ if (CLSCTX_REMOTE_SERVER & dwClsContext) { FIXME ("CLSCTX_REMOTE_SERVER not supported\n"); - hres = E_ACCESSDENIED; + hres = E_NOINTERFACE; } return hres; diff --git a/dlls/ole32/rpc.c b/dlls/ole32/rpc.c index 5411e6c93de..2eeafbcdd3b 100644 --- a/dlls/ole32/rpc.c +++ b/dlls/ole32/rpc.c @@ -479,13 +479,13 @@ create_server(REFCLSID rclsid) { hres = RegOpenKeyExA(HKEY_CLASSES_ROOT, buf, 0, KEY_READ, &key); if (hres != ERROR_SUCCESS) - return REGDB_E_CLASSNOTREG; + return REGDB_E_READREGDB; /* Probably */ memset(dllName,0,sizeof(dllName)); hres= RegQueryValueExW(key,NULL,NULL,NULL,(LPBYTE)dllName,&dllNameLen); + RegCloseKey(key); if (hres) return REGDB_E_CLASSNOTREG; /* FIXME: check retval */ - RegCloseKey(key); memset(&sinfo,0,sizeof(sinfo)); sinfo.cb = sizeof(sinfo); if (!CreateProcessW(NULL,dllName,NULL,NULL,FALSE,0,NULL,NULL,&sinfo,&pinfo))