mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.0 KiB
125 lines
3.0 KiB
// CertWiz.cpp : Implementation of CCertWizApp and DLL registration.
|
|
|
|
#include "stdafx.h"
|
|
#include "CertWiz.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
CCertWizApp NEAR theApp;
|
|
|
|
const GUID CDECL BASED_CODE _tlid =
|
|
{ 0xd4be862f, 0xc85, 0x11d2, { 0x91, 0xb1, 0, 0xc0, 0x4f, 0x8c, 0x87, 0x61 } };
|
|
const WORD _wVerMajor = 1;
|
|
const WORD _wVerMinor = 0;
|
|
|
|
const TCHAR szRegistryKey[] = _T("SOFTWARE\\Microsoft\\InetMgr");
|
|
const TCHAR szWizardKey[] = _T("CertWiz");
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// CCertWizApp::InitInstance - DLL initialization
|
|
|
|
BOOL CCertWizApp::InitInstance()
|
|
{
|
|
BOOL bInit = COleControlModule::InitInstance();
|
|
if (bInit)
|
|
{
|
|
AfxEnableControlContainer();
|
|
InitCommonDll();
|
|
|
|
CString sz;
|
|
// set the name of the application correctly
|
|
sz.LoadString(IDS_CERTWIZ);
|
|
// free the existing name, and copy in the new one
|
|
free((void*)m_pszAppName);
|
|
m_pszAppName = _tcsdup(sz);
|
|
}
|
|
return bInit;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// CCertWizApp::ExitInstance - DLL termination
|
|
|
|
int CCertWizApp::ExitInstance()
|
|
{
|
|
// TODO: Add your own module termination code here.
|
|
|
|
return COleControlModule::ExitInstance();
|
|
}
|
|
|
|
HKEY
|
|
CCertWizApp::RegOpenKeyWizard()
|
|
{
|
|
HKEY hKey = NULL;
|
|
|
|
CString strKey;
|
|
GetRegistryPath(strKey);
|
|
|
|
VERIFY(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey, 0, KEY_ALL_ACCESS, &hKey));
|
|
return hKey;
|
|
}
|
|
|
|
void
|
|
CCertWizApp::GetRegistryPath(CString& str)
|
|
{
|
|
str = szRegistryKey;
|
|
str += _T("\\");
|
|
str += szWizardKey;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DllRegisterServer - Adds entries to the system registry
|
|
|
|
STDAPI DllRegisterServer(void)
|
|
{
|
|
AFX_MANAGE_STATE(_afxModuleAddrThis);
|
|
|
|
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
|
|
return ResultFromScode(SELFREG_E_TYPELIB);
|
|
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
|
|
return ResultFromScode(SELFREG_E_CLASS);
|
|
|
|
HKEY hKey;
|
|
int rc = NOERROR;
|
|
if (ERROR_SUCCESS == (rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
|
szRegistryKey, 0, KEY_CREATE_SUB_KEY, &hKey)))
|
|
{
|
|
HKEY hWizardKey;
|
|
if (ERROR_SUCCESS == (rc = RegCreateKey(hKey, szWizardKey, &hWizardKey)))
|
|
{
|
|
RegCloseKey(hWizardKey);
|
|
}
|
|
RegCloseKey(hKey);
|
|
}
|
|
|
|
return rc;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DllUnregisterServer - Removes entries from the system registry
|
|
|
|
STDAPI DllUnregisterServer(void)
|
|
{
|
|
AFX_MANAGE_STATE(_afxModuleAddrThis);
|
|
|
|
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
|
|
return ResultFromScode(SELFREG_E_TYPELIB);
|
|
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
|
|
return ResultFromScode(SELFREG_E_CLASS);
|
|
// remove CertWiz data from the Registry
|
|
HKEY hKey;
|
|
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
|
szRegistryKey, 0, KEY_ALL_ACCESS, &hKey))
|
|
{
|
|
RegDeleteKey(hKey, szWizardKey);
|
|
RegCloseKey(hKey);
|
|
}
|
|
|
|
return NOERROR;
|
|
}
|