当前位置: 首页>>代码示例>>C++>>正文


C++ DllUnregisterServer函数代码示例

本文整理汇总了C++中DllUnregisterServer函数的典型用法代码示例。如果您正苦于以下问题:C++ DllUnregisterServer函数的具体用法?C++ DllUnregisterServer怎么用?C++ DllUnregisterServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了DllUnregisterServer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DllInstall

// DllInstall - Adds/Removes entries to the system registry per user
//              per machine.	
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
    HRESULT hr = E_FAIL;
    static const wchar_t szUserSwitch[] = _T("user");

    if (pszCmdLine != NULL)
    {
    	if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
    	{
    		AtlSetPerUserRegistration(true);
    	}
    }

    if (bInstall)
    {	
    	hr = DllRegisterServer();
    	if (FAILED(hr))
    	{	
    		DllUnregisterServer();
    	}
    }
    else
    {
    	hr = DllUnregisterServer();
    }

    return hr;
}
开发者ID:fanliaokeji,项目名称:lvdun,代码行数:30,代码来源:ExplorerAddin.cpp

示例2: DllRegisterServer

/***************************************************************************************
 *  Method:
 *
 *
 *  Purpose:
 *
 *
 *  Parameters: 
 *
 *
 *  Return value:
 *
 *
 *  Notes:
 *
 ***************************************************************************************/
STDAPI DllRegisterServer()
{    
    HRESULT hr = S_OK;
    char  rcModule[_MAX_PATH];  
    const COCLASS_REGISTER *pCoClass;   

    
    DllUnregisterServer();
    GetModuleFileNameA( GetModuleInst(), rcModule, NumItems( rcModule ) );

    // for each item in the coclass list, register it
    for ( pCoClass = g_CoClasses; (SUCCEEDED( hr ) && (pCoClass->pClsid != NULL)); pCoClass++ )
    {
        // register the class with default values
        hr = REGUTIL::RegisterCOMClass( *pCoClass->pClsid, 
                                        g_szCoclassDesc, 
                                        g_szProgIDPrefix,
                                        g_iVersion, 
                                        pCoClass->szProgID, 
                                        g_szThreadingModel, 
                                        rcModule );                 
    } // for


    if ( FAILED( hr ) )
        DllUnregisterServer();
    
       
    return hr;
    
} // DllRegisterServer
开发者ID:yuanshengyu,项目名称:TestProjects,代码行数:47,代码来源:dllmain.hpp

示例3: DllInstall

/*----------------------------------------------------------------------------------------------
	Adds/Removes entries to the system registry per user per machine
----------------------------------------------------------------------------------------------*/
STDAPI DLLEXPORT__ DllInstall(BOOL fInstall, LPCWSTR pszCmdLine)
{
	ENTER_DLL();
	HRESULT hr = E_FAIL;
#if WIN32 // TODO-Linux
	static const wchar_t szUserSwitch[] = _T("user");

	if (pszCmdLine != NULL)
	{
		if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
		{
			ModuleEntry::SetPerUserRegistration(true);
		}
	}

	if (fInstall)
	{
		hr = DllRegisterServer();
		if (FAILED(hr))
		{
			DllUnregisterServer();
		}
	}
	else
	{
		hr = DllUnregisterServer();
	}
#endif // WIN32
	return hr;
}
开发者ID:agran147,项目名称:FieldWorks,代码行数:33,代码来源:ModuleEntry.cpp

示例4: DllInstall

STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
	HRESULT hr = E_FAIL;
	// MSVC will call "regsvr32 /i:user" if "per-user registration" is set as a
	// linker option - so handle that here (its also handle for anyone else to
	// be able to manually install just for themselves.)
	static const wchar_t szUserSwitch[] = L"user";
	if (pszCmdLine != NULL)
	{
		if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
		{
			AtlSetPerUserRegistration(true);
			// But ATL still barfs if you try and register a COM category, so
			// just arrange to not do that.
			_AtlComModule.m_ppAutoObjMapFirst = _AtlComModule.m_ppAutoObjMapLast;
		}
	}
	if (bInstall)
	{
		hr = DllRegisterServer();
		if (FAILED(hr))
		{
			DllUnregisterServer();
		}
	}
	else
	{
		hr = DllUnregisterServer();
	}
	return hr;
}
开发者ID:ingfa,项目名称:ShapeSheetWatch,代码行数:31,代码来源:AddIn.cpp

示例5: COMUnregister

/* Unregister this module from COM+ Applications Catalog */
STDAPI COMUnregister(void)
{
    HRESULT hr;

    DllUnregisterServer();
    chk(QGAProviderFind(QGAProviderRemove, NULL));
out:
    return hr;
}
开发者ID:8tab,项目名称:qemu,代码行数:10,代码来源:install.cpp

示例6: DllRegisterServer

STDAPI DllRegisterServer()
{
    DllUnregisterServer();

    // Register CLSID_NET_PROFILER object.
    if(FAILED(RegisterServer(CLSID_NET_PROFILER, TEXT("Hook Net"))))
        return SELFREG_E_CLASS;

    return S_OK;
}
开发者ID:340211173,项目名称:hf-2011,代码行数:10,代码来源:ComStuff.cpp

示例7: DllInstall

// DllInstall - Adds/Removes entries to the system registry per user per machine.
STDAPI DllInstall(BOOL bInstall, _In_opt_ LPCWSTR pszCmdLine)
{
    UNREFERENCED_PARAMETER(pszCmdLine);
    HRESULT hr = E_FAIL;
    static const wchar_t szUserSwitch[] = L"user";


    if (bInstall)
    {	
        hr = DllRegisterServer();
        if (FAILED(hr))
        {
            DllUnregisterServer();
        }
    }
    else
    {
        hr = DllUnregisterServer();
    }

    return hr;
}
开发者ID:0xhack,项目名称:Windows-driver-samples,代码行数:23,代码来源:SampleMft0.cpp

示例8: DllInstall

/**
 * DllInstall - Adds/Removes entries to the system registry per user per machine.
 */
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
    logger->debug(L"BHO::dllexports::DllInstall");
    HRESULT hr = E_FAIL;
    static const wchar_t szUserSwitch[] = L"user";

    if (pszCmdLine != NULL) {
        if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0) {
            ATL::AtlSetPerUserRegistration(true);
        }
    }

    if (bInstall) {	
        hr = DllRegisterServer();
        if (FAILED(hr)) {
            DllUnregisterServer();
        }
    } else {
        hr = DllUnregisterServer();
    }

    return hr;
}
开发者ID:MacTop,项目名称:browser-extensions,代码行数:26,代码来源:dllexports.cpp

示例9: PreventUninstall

UINT WINAPI PreventUninstall(MSIHANDLE hInstall)
{
#ifdef NOTUSED
	CString strMsg;
	strMsg.Format("Are you really, really sure you want to uninstall %s?", g_szAppName);
	if (MessageBox(hWndSetup, strMsg, g_szAppName, MB_YESNO) != IDYES)
		return false; // Do not continue uninstalling
#endif NOTUSED

	// DllUnregisterServer is called to ensure that all vestige of Creata Mail COM
	// objects' registration is removed upon uinstall. This fixes the problem where
	// CreataMail would still appear in Explorer Bar menu after uinstall.  
	DllUnregisterServer();

	/*BOOL bMaintMode = MsiGetMode(hInstall, MSIRUNMODE_MAINTENANCE); 
	::MessageBox(NULL, String("TEST bMaintMode = %X", bMaintMode), "Install Test", MB_OK);*/
	
	// If AutoUpdate is not in progress and Uninstall is not in Maintenance mode then
	// the survey page is displayed. Otherwise, if Autoupdate is in progress the status 
	// is now cleared. If Uninstall is in Maintenance mode then Maintenance mode status 
	// is now cleared.
	DWORD dwUpdateStatus = 0;
	DWORD dwInstallStatus = 0;
	bool bInstallStatKeyFound = GetInstallStatus(dwInstallStatus);
	CAutoUpdate::GetAutoUpdateStatus(dwUpdateStatus);

	if (dwUpdateStatus == AUTOUPDATE_STATUS_DONE)
	{
#ifdef NOTUSED
		if (!bInstallStatKeyFound || dwInstallStatus != UNINSTALL_STATUS_MAINTENANCE)
		{
			CString szURL;
			CAuthenticate Auth;
			if (Auth.ReadHost(szURL))
			{
				szURL += DEFAULT_UNINSTALL;
				DWORD dwResult = (DWORD)::ShellExecute(NULL, "open", szURL, NULL, NULL, SW_SHOWNORMAL);	
			}
		}
#endif NOTUSED
	}
	else
		CAutoUpdate::SetAutoUpdateStatus(AUTOUPDATE_STATUS_DONE);

	if (dwInstallStatus == UNINSTALL_STATUS_MAINTENANCE)
		SetInstallStatus(UNINSTALL_STATUS_DONE);

	return 1; // Continue with the uninstall
}
开发者ID:jimmccurdy,项目名称:ArchiveGit,代码行数:49,代码来源:AgOutlookAddIn.cpp

示例10: DllInstall

STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
	HRESULT hr = E_FAIL;
	static const wchar_t szUserSwitch[] = L"user";

	if ( pszCmdLine != NULL )
	{
#if defined(_MSC_VER) && (_MSC_VER >= 1500)	// No VS2005
		if ( _wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0 )
			AtlSetPerUserRegistration(true);
#endif
	}

	if ( bInstall )
	{
		hr = DllRegisterServer();
		if ( FAILED(hr) )
			DllUnregisterServer();
	}
	else
		hr = DllUnregisterServer();

	return hr;
}
开发者ID:lemonxiao0,项目名称:peerproject,代码行数:24,代码来源:TextViewer.cpp

示例11: sizeof

HRESULT
Module::Register()
{
  TCHAR module_file_name[MAX_PATH + 1];

  if (0 == GetModuleFileName(m_hModule,
			     module_file_name,
			     sizeof module_file_name / sizeof (TCHAR)))
    return E_FAIL;

  DllUnregisterServer();

  for (int i = 0; i < REG_INFO_SIZE; i++)
    {
      const RegInfo* ri = reg_info + i;

      TCHAR buffer[1024];
      size_t size;
      if (ri->type == REG_DWORD)
	{
	  *(DWORD*)buffer = _ttoi(ri->value);
	  size = sizeof (DWORD);
	}
      else
	{
	  _stprintf(buffer, ri->value, module_file_name);
	  size = _tcslen(buffer) + 1;
	}

      HKEY hkey;
      DWORD disposition;
      LONG stat = RegCreateKeyEx(HKEY_CLASSES_ROOT, ri->reg_key, 0, NULL,
	                         REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
				 NULL, &hkey, &disposition);
      if (stat != ERROR_SUCCESS)
	return E_FAIL;

      stat = RegSetValueEx(hkey, ri->value_name, 0, ri->type, (BYTE*) buffer, size);
      RegCloseKey(hkey);
      if (stat != ERROR_SUCCESS)
	return E_FAIL;
    }

  return S_OK;
}
开发者ID:Rahien,项目名称:virtuoso-opensource,代码行数:45,代码来源:dllmodule.cpp

示例12: DllRegisterServer

STDAPI DllRegisterServer( void )
{
   TCHAR lpKeyName[ MAX_REGSTR_SIZE ];
   TCHAR lpNameBuf[ MAX_REGSTR_SIZE ];
   TCHAR lpValue  [ MAX_REGSTR_SIZE ];
   LPCTSTR lpValName;
   HRESULT hr = S_OK;
   HKEY hKey;
   long err;
   int i;

   for( i = 0; i < ( int ) HB_SIZEOFARRAY( s_regTable ); ++i )
   {
      s_getKeyValue( s_regTable[ i ][ 0 ], lpKeyName, MAX_REGSTR_SIZE );
      if( s_regTable[ i ][ 1 ] )
      {
         s_getKeyValue( s_regTable[ i ][ 1 ], lpNameBuf, MAX_REGSTR_SIZE );
         lpValName = lpNameBuf;
      }
      else
         lpValName = NULL;
      s_getKeyValue( s_regTable[ i ][ 2 ], lpValue, MAX_REGSTR_SIZE );

      err = RegCreateKeyEx( HKEY_CLASSES_ROOT, lpKeyName,
                            0, NULL, REG_OPTION_NON_VOLATILE,
                            KEY_SET_VALUE | KEY_CREATE_SUB_KEY,
                            NULL, &hKey, NULL );

      if( err == ERROR_SUCCESS )
      {
         err = RegSetValueEx( hKey, lpValName, 0, REG_SZ,
                              ( const BYTE * ) lpValue,
                              ( lstrlen( lpValue ) + 1 ) * sizeof( TCHAR ) );
         RegCloseKey( hKey );
      }
      if( err != ERROR_SUCCESS )
      {
         DllUnregisterServer();
         hr = SELFREG_E_CLASS;
         break;
      }
   }

   return hr;
}
开发者ID:antonioscherrer,项目名称:harbour-core,代码行数:45,代码来源:hbolesrv.c

示例13: ImplWinMain

static void ImplWinMain()
{
	int argc = 0;
	LPWSTR* argv = CommandLineToArgvW(GetCommandLine(), &argc);
	if (!argv)
		return;

	if ((argc >= 2) && (argc <= 5))
	{
		if (wcscmp(argv[1], L"/automation") == 0)
			AutomationMain();
		else if (wcscmp(argv[1], L"unregserver") == 0)
			DllUnregisterServer();
		else if (wcscmp(argv[1], L"regserver") == 0)
			DllRegisterServer();
	}
	LocalFree(argv);
}
开发者ID:YueLinHo,项目名称:TortoiseGit,代码行数:18,代码来源:GitWCRevCOM.cpp

示例14: DllRegisterServer

STDAPI DllRegisterServer()
{
    HRESULT hr = DllUnregisterServer();
    assert(SUCCEEDED(hr));

    std::wstring filename_;

    hr = ComReg::ComRegGetModuleFileName(g_hModule, filename_);
    assert(SUCCEEDED(hr));
    assert(!filename_.empty());

    const wchar_t* const filename = filename_.c_str();

    //RegisterSource(filename);
    RegisterHandler(filename);

    return S_OK;
}
开发者ID:brion,项目名称:webmdshow,代码行数:18,代码来源:dllentry.cpp

示例15: DllRegisterServer

/* Register this dll as a VSS provider */
STDAPI DllRegisterServer(void)
{
    COMInitializer initializer;
    COMPointer<IVssAdmin> pVssAdmin;
    HRESULT hr = E_FAIL;
    char dllPath[MAX_PATH];
    char key[256];

    if (!g_hinstDll) {
        errmsg_dialog(hr, "Module instance is not available");
        goto out;
    }

    /* Add this module to registery */

    sprintf(key, "CLSID\\%s", g_szClsid);
    if (!CreateRegistryKey(key, NULL, g_szClsid)) {
        goto out;
    }

    if (!GetModuleFileName(g_hinstDll, dllPath, sizeof(dllPath))) {
        errmsg_dialog(GetLastError(), "GetModuleFileName failed");
        goto out;
    }

    sprintf(key, "CLSID\\%s\\InprocServer32", g_szClsid);
    if (!CreateRegistryKey(key, NULL, dllPath)) {
        goto out;
    }

    if (!CreateRegistryKey(key, "ThreadingModel", "Apartment")) {
        goto out;
    }

    sprintf(key, "CLSID\\%s\\ProgID", g_szClsid);
    if (!CreateRegistryKey(key, NULL, g_szProgid)) {
        goto out;
    }

    if (!CreateRegistryKey(g_szProgid, NULL, QGA_PROVIDER_NAME)) {
        goto out;
    }

    sprintf(key, "%s\\CLSID", g_szProgid);
    if (!CreateRegistryKey(key, NULL, g_szClsid)) {
        goto out;
    }

    hr = CoCreateInstance(CLSID_VSSCoordinator, NULL, CLSCTX_ALL,
                          IID_IVssAdmin, (void **)pVssAdmin.replace());
    if (FAILED(hr)) {
        errmsg_dialog(hr, "CoCreateInstance(VSSCoordinator) failed");
        goto out;
    }

    hr = pVssAdmin->RegisterProvider(g_gProviderId, CLSID_QGAVSSProvider,
                                     const_cast<WCHAR*>(QGA_PROVIDER_LNAME),
                                     VSS_PROV_SOFTWARE,
                                     const_cast<WCHAR*>(QGA_PROVIDER_VERSION),
                                     g_gProviderVersion);
    if (FAILED(hr)) {
        errmsg_dialog(hr, "RegisterProvider failed");
    }

out:
    if (FAILED(hr)) {
        DllUnregisterServer();
    }

    return hr;
}
开发者ID:8tab,项目名称:qemu,代码行数:72,代码来源:install.cpp


注:本文中的DllUnregisterServer函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。