STDAPI DllRegisterServerRaw(BOOL bForce) { if(!bForce){// Может мы уже зарегены? CRegKey reg; LONG lRet=0; CRegKey key2; if(key2.Open(HKEY_CURRENT_USER, SAVE_REGKEY)==ERROR_SUCCESS && key2.m_hKey!=NULL){ DWORD hookData=0; DWORD lSize = sizeof(hookData),dwType=0; RegQueryValueEx(key2.m_hKey,"ShellExtRegistered",NULL, &dwType,(LPBYTE)(&hookData), &lSize); if(hookData!=0){ plgOptions.bRegistered=1; } } } // Не смотря ни на что даже при наличии регистрации в эксплорер меню может быть не видно!!! :( // поэтому всеже регим каждый раз /*if(plgOptions.bRegistered){ return 0; }*/ CoInitializeEx(0,COINIT_APARTMENTTHREADED); // If we're on NT, add ourselves to the list of approved shell extensions. // Note that you should *NEVER* use the overload of CRegKey::SetValue with // 4 parameters. It lets you set a value in one call, without having to // call CRegKey::Open() first. However, that version of SetValue() has a // bug in that it requests KEY_ALL_ACCESS to the key. That will fail if the // user is not an administrator. (The code should request KEY_WRITE, which // is all that's necessary.) if ( 0 == (GetVersion() & 0x80000000UL) ){ CRegKey reg; LONG lRet=0; lRet = reg.Open ( HKEY_LOCAL_MACHINE,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),KEY_SET_VALUE); if ( ERROR_SUCCESS == lRet ){ lRet = reg.SetValue ( _T("WKShellExtender class"), _T("{AC95BA2C-8211-45D4-AB5C-C2A9BCCC8FB6}") ); } } // registers object, typelib and all interfaces in typelib BOOL bRes=_Module.RegisterServer(FALSE); if(bRes==0){ if(!plgOptions.bRegistered){// Запоминаем сами... CRegKey key2; if(key2.Open(HKEY_CURRENT_USER, SAVE_REGKEY)!=ERROR_SUCCESS){ key2.Create(HKEY_CURRENT_USER, SAVE_REGKEY); } if(key2.m_hKey!=NULL){ DWORD hookData=1; RegSetValueEx(key2.m_hKey,"ShellExtRegistered",0,REG_DWORD,(BYTE*)(&hookData),sizeof(hookData)); } } InterlockedIncrement(&plgOptions.bRegistered); } CoUninitialize(); return bRes; }
//*************************************** //* Date : 5.26.99 //* Last Modified : 1.20.2000 //* Function name : DllRegisterServer //* Description : //*************************************** // STDAPI DllRegisterServer(void) { _TCHAR strCLSID[50]; OLECHAR strWideCLSID[50]; CRegKey key; HRESULT hr; USES_CONVERSION; hr = _Module.RegisterServer(TRUE); if (SUCCEEDED(hr)) { if (::StringFromGUID2(CLSID_CopyPathContextMenu, strWideCLSID, 50) > 0) { _tcscpy(strCLSID, OLE2CT(strWideCLSID)); hr = key.SetValue(HKEY_CLASSES_ROOT, _T("*\\shellex\\ContextMenuHandlers\\CopyPathExt\\"), strCLSID); hr = key.SetValue(HKEY_CLASSES_ROOT, _T("directory\\shellex\\ContextMenuHandlers\\CopyPathExt\\"), strCLSID); hr = key.SetValue(HKEY_CLASSES_ROOT, _T("drive\\shellex\\ContextMenuHandlers\\CopyPathExt\\"), strCLSID); } } return hr; }
STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib HRESULT hRes = _Module.RegisterServer(TRUE); if(!SUCCEEDED(hRes)) { HMODULE hDll; LONG (APIENTRY *pRegOverridePredefKey)(HKEY hKey, HKEY hNewHKey); if((hDll = LoadLibrary(NCS_T("advapi32.dll"))) != NULL) { if((pRegOverridePredefKey = #ifdef _WIN32_WCE (LONG(APIENTRY*)(HKEY, HKEY))GetProcAddress(hDll, NCS_T("RegOverridePredefKey")) #else (LONG(APIENTRY*)(HKEY, HKEY))GetProcAddress(hDll, "RegOverridePredefKey") #endif ) != NULL) { HKEY hNewCRKey; if(RegOpenKeyEx(HKEY_CURRENT_USER, NCS_T("SOFTWARE\\Classes"), 0, KEY_ALL_ACCESS, &hNewCRKey) == ERROR_SUCCESS) { if(pRegOverridePredefKey(HKEY_CLASSES_ROOT, hNewCRKey) == ERROR_SUCCESS) { // registers object, typelib and all interfaces in typelib hRes = _Module.RegisterServer(TRUE); pRegOverridePredefKey(HKEY_CLASSES_ROOT, NULL); } RegCloseKey(hNewCRKey); } } FreeLibrary(hDll); } } return(hRes); }
////////////////////////////////////////////////////////////////////////////// //++ // // DllRegisterServer // // Description: // Adds entries to the system registry // // Arguments: // None. // // Return Value: // S_OK Success // //-- ////////////////////////////////////////////////////////////////////////////// STDAPI DllRegisterServer( void ) { // registers object, typelib and all interfaces in typelib return _Module.RegisterServer( TRUE ); } //*** DllRegisterServer
STDAPI DllRegisterServer(void) { ATLTRACE("DllRegisterServer\n"); // registers object return _Module.RegisterServer(FALSE); }
STDAPI DllRegisterServer(void) { HRESULT hresult; hresult = S_OK; #ifdef _MERGE_PROXYSTUB hresult = PrxDllRegisterServer(); #endif if (SUCCEEDED(hresult)) { hresult = _Module.RegisterServer(TRUE); } // **************************************************************************** // **************************************************************************** // !!!! Temporary code: registrating the categories should be done by the setup // **************************************************************************** HRESULT hr = Create4C_CATIDs(); if (FAILED(hr)) { return hr; } //if (SUCCEEDED(hresult)) { // hresult = RegisterCategory(); //} // end temp code // **************************************************************************** // **************************************************************************** return hresult; }
///////////////////////////////////////////////////////////////////////////// // DllRegisterServer - Adds entries to the system registry STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib HRESULT hr = _Module.RegisterServer(true); // Register the vertical explorer bar object. if(!RegisterBand(CLSID_JMEXPLORERBAND_STRING, _T("&Creata Mail"))) return SELFREG_E_CLASS; // Register the component categories for the explorer bar object. if(!RegisterComCat(CLSID_JMExplorerBand, CATID_InfoBand)) return SELFREG_E_CLASS; // Register BHO if(!RegisterBHO(CLSID_BROWSERHELPEROBJ_STRING, g_szAppName)) return SELFREG_E_CLASS; // Register IE icon button if(!RegisterIEButton(CLSID_JMEXPLORERBAND_STRING, g_szAppName)) return SELFREG_E_CLASS; // Currenly toolband is not used, so we need to check to see // if it was registered by previous versions. If so, we unregister. if (IsToolbandRegistered(CLSID_JMTOOLBAND_STRING)) UnregisterToolBand(CLSID_JMTOOLBAND_STRING); // Register the tool band object. -- currently not used - JHC /* if(!RegisterToolBand(CLSID_JMTOOLBAND_STRING, g_szAppName)) return SELFREG_E_CLASS;*/ return hr; }
STDAPI DllRegisterServer(void) { // Registers object, typelib and all interfaces in typelib TraceMsg( L"-->DllRegisterServer.\n"); return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { HRESULT hRes = S_OK; // registers object, typelib and all interfaces in typelib hRes = _Module.RegisterServer(FALSE /*bRegTypeLib*/); return hRes; } //*** DllRegisterServer()
STDAPI DllRegisterServer(void) { #ifdef _MERGE_PROXYSTUB HRESULT hRes = PrxDllRegisterServer(); if (FAILED(hRes)) return hRes; #endif // Registriert Objekt, Typelib und alle Schnittstellen in Typelib return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { #ifdef _MERGE_PROXYSTUB HRESULT hRes = PrxDllRegisterServer(); if (FAILED(hRes)) return hRes; #endif // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib HRESULT hr = _Module.RegisterServer(TRUE); if (SUCCEEDED(hr)) hr = RegisterThisComponentWithItsCategory(MIC_ISO,CLSID_HHMRISO); return hr; }
///////////////////////////////////////////////////////////////////////////// // DllRegisterServer - Adds entries to the system registry //------------------------------------------------------------------* STDAPI DllRegisterServer(void) { HRESULT hr = Create4C_CATIDs(); ASSERT(SUCCEEDED(hr)); if (FAILED(hr)) { return hr; } // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib HRESULT hr = _Module.RegisterServer(); // Notify WMP that plugin has been added WMPNotifyPluginAddRemove(); return hr; }
STDAPI DllRegisterServer(void) { #ifdef _MERGE_PROXYSTUB RETURN_FAILED(PrxDllRegisterServer()); #endif // registers object, typelib and all interfaces in typelib RETURN_FAILED(_Module.RegisterServer(TRUE)); // Register the component category return RegisterComponentCategory(CATID_TCObj, L"Allegiance Test Common Objects"); }
UINT WINAPI EnableClients(DWORD dwClientType) { HRESULT hr = S_OK; BOOL bExpressRegOK = true; BOOL bOutlookRegOK = true; BOOL bIERegOK = true; BOOL bAOLRegOK = true; if (dwClientType & CLIENT_TYPE_EXPRESS) { hr = _Module.RegisterServer(true, &CLSID_OEAddin); bExpressRegOK = SUCCEEDED(hr); } if (dwClientType & CLIENT_TYPE_OUTLOOK) { hr = _Module.RegisterServer(true, &CLSID_MsAddIn); bOutlookRegOK = SUCCEEDED(hr); } // Temp, Until AOL supported - JHC /*if (dwClientType & CLIENT_TYPE_AOL) { hr = _Module.RegisterServer(true, &CLSID_AOLAddin); bAOLRegOK = SUCCEEDED(hr); }*/ if (dwClientType & CLIENT_TYPE_IE) { BOOL bBandRegOK = RegisterBand(CLSID_JMEXPLORERBAND_STRING, _T("&Creata Mail")); BOOL bComCatRegOK = RegisterComCat(CLSID_JMExplorerBand, CATID_InfoBand); BOOL bBHORegOK = RegisterBHO(CLSID_BROWSERHELPEROBJ_STRING, g_szAppName); BOOL bIEButtonRegOK = RegisterIEButton(CLSID_JMEXPLORERBAND_STRING, g_szAppName); bIERegOK = bBandRegOK && bComCatRegOK && bBHORegOK && bIEButtonRegOK; _Module.RegisterServer(true, &CLSID_JMExplorerBand); } return (bExpressRegOK && bOutlookRegOK && bIERegOK && bAOLRegOK); }
STDAPI DllRegisterServer(void) { CComBSTR bstrPath; if (SUCCEEDED(EnsureXmlPath(&bstrPath))) { USES_CONVERSION; bstrPath.Append(L"\\GeoComponentSequence.dtd"); DeleteFile(OLE2A(bstrPath)); } // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { HRESULT hresult; hresult = S_OK; #ifdef _MERGE_PROXYSTUB hresult = PrxDllRegisterServer(); #endif if (SUCCEEDED(hresult)) { hresult = _Module.RegisterServer(TRUE); } if (SUCCEEDED(hresult)) { hresult = RegisterCategory(); } return hresult; }
HRESULT OPCEngine::registerServer(void) { _TRACE(TL_INF, TG_ENG, (_T("register server"))); HRESULT res; // register COM Server object res = _Module.RegisterServer(FALSE); if (SUCCEEDED(res)) { ICatRegister *cr; CATEGORYINFO catInfo[4]; CATID catIDs[2]; if (SUCCEEDED(res = ::CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_ALL, IID_ICatRegister, (void **)&cr))) { // register category catInfo[0].catid = CATID_OPCDAServer10; catInfo[1].catid = CATID_OPCDAServer10; catInfo[2].catid = CATID_OPCDAServer20; catInfo[3].catid = CATID_OPCDAServer20; catInfo[0].lcid = MAKELCID( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) , SORT_DEFAULT); catInfo[1].lcid = MAKELCID( MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT); catInfo[2].lcid = MAKELCID( MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) , SORT_DEFAULT); catInfo[3].lcid = MAKELCID( MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT); wcscpy(catInfo[0].szDescription, L"OPC Data Access Server V1.0A"); wcscpy(catInfo[1].szDescription, L"OPC Daten Server V1.0A"); wcscpy(catInfo[2].szDescription, L"OPC Data Access Server V2.0"); wcscpy(catInfo[3].szDescription, L"OPC Daten Server V2.0"); res = cr->RegisterCategories(4, catInfo); _TRACE(TL_INF, TG_ENG, (_T("register component categories [0x%X]"), res)); // register server in categories catIDs[0] = CATID_OPCDAServer10; catIDs[1] = CATID_OPCDAServer20; res = cr->RegisterClassImplCategories(g_clsid, 2, catIDs); _TRACE(TL_INF, TG_ENG, (_T("register component implementations [0x%X]"), res)); cr->Release(); } } return res; } // registerServer
STDAPI DllRegisterServer(void) { CComPtr<IWMPMediaPluginRegistrar> spRegistrar; HRESULT hr; // Create the registration object hr = spRegistrar.CoCreateInstance(CLSID_WMPMediaPluginRegistrar, NULL, CLSCTX_INPROC_SERVER); if ( FAILED( hr ) ) { return hr; } // Load friendly name and description strings CComBSTR bstrFriendlyName; CComBSTR bstrDescription; bstrFriendlyName.LoadString(IDS_FRIENDLYNAME); bstrDescription.LoadString(IDS_DESCRIPTION); // Describe the type of data handled by the plug-in DMO_PARTIAL_MEDIATYPE mt = { 0 }; mt.type = MEDIATYPE_[!output SAFE_ROOT]; mt.subtype = MEDIASUBTYPE_NULL; // Register the plug-in with WMP hr = spRegistrar->WMPRegisterPlayerPlugin( bstrFriendlyName, // friendly name (for menus, etc) bstrDescription, // description (for Tools->Options->Plug-ins) NULL, // path to app that uninstalls the plug-in 1, // DirectShow priority for this plug-in WMP_PLUGINTYPE_RENDERING, // Plug-in type CLSID_[!output Safe_root],// Class ID of plug-in 1, // No. media types supported by plug-in &mt); // Array of media types supported by plug-in if ( FAILED( hr ) ) { return hr; } // registers object return _Module.RegisterServer(); }
// by exporting DllRegisterServer, you can use regsvr32.exe STDAPI DllRegisterServer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); HRESULT hRes = S_OK; // Registers object, typelib and all interfaces in typelib hRes = _Module.RegisterServer(TRUE); if (FAILED(hRes)) return hRes; // Register description of this add-in object in its own // "/Description" subkey. // TODO: If you add more add-ins to this module, you need // to register all of their descriptions, each description // in each add-in object's registry CLSID entry: // HKEY_CLASSES_ROOT\Clsid\{add-in CLSID}\Description="add-in description" _ATL_OBJMAP_ENTRY* pEntry = _Module.m_pObjMap; CRegKey key; LONG lRes = key.Open(HKEY_CLASSES_ROOT, _T("CLSID")); if (lRes == ERROR_SUCCESS) { USES_CONVERSION; LPOLESTR lpOleStr; StringFromCLSID(*pEntry->pclsid, &lpOleStr); LPTSTR lpsz = OLE2T(lpOleStr); lRes = key.Open(key, lpsz); if (lRes == ERROR_SUCCESS) { CString strDescription; strDescription.LoadString(IDS_SS_LOG_ADDIN_DESCRIPTION); key.SetKeyValue(_T("Description"), strDescription); } CoTaskMemFree(lpOleStr); } if (lRes != ERROR_SUCCESS) hRes = HRESULT_FROM_WIN32(lRes); return hRes; }
STDAPI DllRegisterServer(void) { #ifdef _MERGE_PROXYSTUB HRESULT hRes = PrxDllRegisterServer(); if( FAILED(hRes) ) return hRes; #endif CCommandStringParser p; //if(p.IsOutlookInstalled()) //{ // RegisterIManageDlls(); //} // p.InsertCommands(); return _Module.RegisterServer(FALSE); }
STDAPI DllRegisterServer(void) { HKEY key; char szIco [MAX_PATH]; char szCustomizer [1000]; DWORD dwSize = MAX_PATH; if (ERROR_SUCCESS != RegOpenKey (HKEY_CURRENT_USER, "Software\\FreeDownloadManager.ORG\\Free Download Manager", &key)) return E_FAIL; if (ERROR_SUCCESS != RegQueryValueEx (key, "Path", NULL, NULL, (LPBYTE) szIco, &dwSize)) return E_FAIL; szIco [dwSize] = 0; if (szIco [dwSize-1] != '\\') lstrcat (szIco, "\\"); lstrcat (szIco, "fdmcsiebtn.ico"); dwSize = 1000; if (ERROR_SUCCESS != RegQueryValueEx (key, "Customizer", NULL, NULL, (LPBYTE) szCustomizer, &dwSize)) return E_FAIL; szCustomizer [dwSize] = 0; RegCloseKey (key); HRESULT hr = _Module.RegisterServer(TRUE); if (FAILED (hr)) return hr; RegOpenKey (HKEY_CURRENT_USER, "Software\\Microsoft\\Internet Explorer\\Extensions\\{DAC360AF-9FD0-432D-B2F2-ED3220F4CAD9}", &key); RegSetValueEx (key, "Icon", 0, REG_SZ, (LPBYTE)szIco, lstrlen (szIco)); RegSetValueEx (key, "HotIcon", 0, REG_SZ, (LPBYTE)szIco, lstrlen (szIco)); RegSetValueEx (key, "ButtonText", 0, REG_SZ, (LPBYTE)szCustomizer, lstrlen (szCustomizer)); RegCloseKey (key); return hr; }
STDAPI DllRegisterServer(void) { // オブジェクト、タイプライブラリおよびタイプライブラリ内の全てのインターフェイスを登録します return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { USES_CONVERSION; // registers object, typelib and all interfaces in typelib HRESULT hr = _Module.RegisterServer(TRUE); if (FAILED(hr)) return hr; // Mark the control as safe for initializing. hr = CreateComponentCategory(CATID_SafeForInitializing, L"Controls safely initializable from persistent data!"); if (FAILED(hr)) return hr; // MessageBox(NULL, "3", "", MB_OK); hr = RegisterCLSIDInCategory(CLSID_LHTMLActiveDocument, CATID_SafeForInitializing); if (FAILED(hr)) return hr; // MessageBox(NULL, "4", "", MB_OK); // Mark the control as safe for scripting. hr = CreateComponentCategory(CATID_SafeForScripting, L"Controls safely scriptable!"); if (FAILED(hr)) return hr; // MessageBox(NULL, "5", "", MB_OK); hr = RegisterCLSIDInCategory(CLSID_LHTMLActiveDocument, CATID_SafeForScripting); if (FAILED(hr)) return hr; { LPOLESTR clsidString; StringFromCLSID(CLSID_LHTMLActiveDocument, &clsidString); TCHAR filename[MAX_PATH]; { CRegKey key; key.Open(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE"); DWORD dwCount = sizeof(filename); key.QueryValue(filename, NULL, &dwCount); } // MessageBox(NULL, "7", "", MB_OK); { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "svgfile\\CLSID"); key.SetValue(W2A(clsidString)); } { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "svgfile\\DefaultIcon"); key.SetValue("%SystemRoot%\\system32\\url.dll,0"); } // MessageBox(NULL, "8", "", MB_OK); { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "svgfile\\shell\\open\\command"); TCHAR value[512]; sprintf(value, "%s -nohome %%1", filename); key.SetValue(value); } // File extension associations { CRegKey key; key.Create(HKEY_CLASSES_ROOT, ".svg"); key.SetValue("svgfile"); key.SetValue("image/svg+xml", "Content Type"); } { CRegKey key; key.Create(HKEY_CLASSES_ROOT, ".svgz"); key.SetValue("svgfile"); key.SetValue("image/svg+xml", "Content Type"); } { CRegKey key; key.Create(HKEY_CLASSES_ROOT, ".xht"); key.SetValue("svgfile"); key.SetValue("application/xhtml+xml", "Content Type"); } // Mime associations { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "mime\\Database\\Content Type\\image/svg+xml"); key.SetValue(".svg", "Extension"); key.SetValue(W2A(clsidString), "CLSID"); } /* { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "mime\\Database\\Content Type\\image/svg+xml"); key.SetValue(".svgz", "Extension"); key.SetValue(W2A(clsidString), "CLSID"); } */ { CRegKey key; key.Create(HKEY_CLASSES_ROOT, "mime\\Database\\Content Type\\application/xhtml+xml"); key.SetValue(".xht", "Extension"); key.SetValue(W2A(clsidString), "CLSID"); } /////////// CoTaskMemFree(clsidString); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0); } return 0; }
STDAPI DllRegisterServer(void) { // オブジェクト、タイプライブラリおよびタイプライブラリ内の全てのインターフェイスを登録します _Module.UpdateRegistryFromResource( IDR_ServerInfo, TRUE ); return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { // registers object (see appsupp.reg) return _Module.RegisterServer(FALSE); }
STDAPI DllRegisterServer(void) { return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { // On NT, add our extension to the list of approved extensions. if ( 0 == (GetVersion() & 0x80000000) ) { CRegKey reg; LONG lRet; lRet = reg.Open ( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"), KEY_SET_VALUE ); if ( ERROR_SUCCESS != lRet ) return E_ACCESSDENIED; lRet = reg.SetValue ( _T("MP3 ID3v1 viewer column ext"), _T("{AC146E80-3679-4BCA-9BE4-E36512573E6C}") ); reg.Close(); if ( ERROR_SUCCESS != lRet ) return E_ACCESSDENIED; } // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); }
STDAPI DllRegisterServer(void) { // On NT, add ourself to the list of approved shell extensions. if ( 0 == (GetVersion() & 0x80000000) ) { CRegKey reg; LONG lRet; lRet = reg.Open ( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"), KEY_SET_VALUE ); if ( ERROR_SUCCESS != lRet ) return E_ACCESSDENIED; lRet = reg.SetValue ( _T("Hard Links Shell Extension"), _T("{3C06DFAE-062F-11D4-8D3B-919D46C1CE19}") ); if ( ERROR_SUCCESS != lRet ) return E_ACCESSDENIED; } // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); }