本文整理汇总了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;
}
示例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
示例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;
}
示例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;
}
示例5: COMUnregister
/* Unregister this module from COM+ Applications Catalog */
STDAPI COMUnregister(void)
{
HRESULT hr;
DllUnregisterServer();
chk(QGAProviderFind(QGAProviderRemove, NULL));
out:
return hr;
}
示例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;
}
示例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;
}
示例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;
}
示例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
}
示例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;
}
示例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;
}
示例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;
}
示例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);
}
示例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;
}
示例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;
}