// 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 #include #endif #include #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 no_namespace implementation_only exclude("_LARGE_INTEGER","_SYSTEMTIME") #import no_namespace implementation_only #import no_namespace implementation_only #import no_namespace rename("property", "aproperty") implementation_only #import no_namespace implementation_only #import 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; }