Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

182 lines
3.5 KiB

// stdafx.cpp : source file that includes just the standard includes
// stdafx.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif
#include <atlimpl.cpp>
#define COUNT_OF(a) (sizeof(a) / sizeof(a[0]))
//---------------------------------------------------------------------------
// CAdmtModule Class
//---------------------------------------------------------------------------
CAdmtModule::CAdmtModule()
{
}
CAdmtModule::~CAdmtModule()
{
}
// OpenLog Method
bool CAdmtModule::OpenLog()
{
// CloseLog(); // error class doesn't reset file pointer to NULL when closing file
return m_Error.LogOpen(GetLogFolder() + _T("Migration.log"), 0, 0, true) ? true : false;
}
// CloseLog Method
void CAdmtModule::CloseLog()
{
m_Error.LogClose();
}
// Log Method
void __cdecl CAdmtModule::Log(UINT uLevel, UINT uId, ...)
{
_TCHAR szFormat[512];
_TCHAR szMessage[1024];
if (LoadString(GetResourceInstance(), uId, szFormat, 512))
{
va_list args;
va_start(args, uId);
_vsntprintf(szMessage, COUNT_OF(szMessage), szFormat, args);
va_end(args);
szMessage[1023] = _T('\0');
}
else
{
szMessage[0] = _T('\0');
}
m_Error.MsgProcess(uLevel | uId, szMessage);
}
// Log Method
void __cdecl CAdmtModule::Log(LPCTSTR pszFormat, ...)
{
_TCHAR szMessage[1024];
if (pszFormat)
{
va_list args;
va_start(args, pszFormat);
_vsntprintf(szMessage, COUNT_OF(szMessage), pszFormat, args);
va_end(args);
szMessage[1023] = _T('\0');
}
else
{
szMessage[0] = _T('\0');
}
m_Error.MsgProcess(0, szMessage);
}
StringLoader gString;
//#import <ActiveDs.tlb> no_namespace implementation_only exclude("_LARGE_INTEGER","_SYSTEMTIME")
#import <DBMgr.tlb> no_namespace implementation_only
#import <MigDrvr.tlb> no_namespace implementation_only
#import <VarSet.tlb> no_namespace rename("property", "aproperty") implementation_only
#import <WorkObj.tlb> no_namespace implementation_only
#import <MsPwdMig.tlb> no_namespace implementation_only
#import "Internal.tlb" no_namespace implementation_only
// GetLogFolder Method
_bstr_t GetLogFolder()
{
_bstr_t strFolder;
HKEY hKey;
DWORD dwError = RegOpenKey(HKEY_LOCAL_MACHINE, _T("Software\\Mission Critical Software\\DomainAdmin"), &hKey);
if (dwError == ERROR_SUCCESS)
{
_TCHAR szPath[_MAX_PATH];
DWORD cbPath = sizeof(szPath);
dwError = RegQueryValueEx(hKey, _T("Directory"), NULL, NULL, (LPBYTE)szPath, &cbPath);
if (dwError == ERROR_SUCCESS)
{
_TCHAR szDrive[_MAX_DRIVE];
_TCHAR szDir[_MAX_DIR];
_tsplitpath(szPath, szDrive, szDir, NULL, NULL);
_tcscat(szDir, _T("Logs"));
_tmakepath(szPath, szDrive, szDir, NULL, NULL);
strFolder = szPath;
}
RegCloseKey(hKey);
}
return strFolder;
}
// GetReportsFolder Method
_bstr_t GetReportsFolder()
{
_bstr_t strFolder;
HKEY hKey;
DWORD dwError = RegOpenKey(HKEY_LOCAL_MACHINE, _T("Software\\Mission Critical Software\\DomainAdmin"), &hKey);
if (dwError == ERROR_SUCCESS)
{
_TCHAR szPath[_MAX_PATH];
DWORD cbPath = sizeof(szPath);
dwError = RegQueryValueEx(hKey, _T("Directory"), NULL, NULL, (LPBYTE)szPath, &cbPath);
if (dwError == ERROR_SUCCESS)
{
_TCHAR szDrive[_MAX_DRIVE];
_TCHAR szDir[_MAX_DIR];
_tsplitpath(szPath, szDrive, szDir, NULL, NULL);
_tcscat(szDir, _T("Reports"));
_tmakepath(szPath, szDrive, szDir, NULL, NULL);
CreateDirectory(szPath, NULL);
strFolder = szPath;
}
RegCloseKey(hKey);
}
return strFolder;
}