BOOL MOperatingSystem::IsWindows9x()
{
  if (IsWindows98())
    return TRUE;

  if (IsWindows95())
    return TRUE;

  if (IsWindowsME())
    return TRUE;

  return FALSE;
}
void OutlookExtensionCacheNuker::Execute()
{
	LOG_WS_INFO(_T("Removing extend.dat"));
	if( m_pProcessController)
	{
		m_pProcessController->ReportProgress(_T("Removing extend.dat"));
	}
	
	std::vector<CStdString> vecProfiles = SystemFolderInfo::GetUserProfiles();

	CStdString sPath;

	if (IsOutlook98() || (IsWindows98() && vecProfiles.size() == 0))
	{
		sPath = BuildExtendDatPath(_T("")) + _T("\\") + GetExtendFilename();
		CStdString sMsg;
		sMsg.Format(_T("Deleting %s"), sPath.c_str() );
		LOG_WS_INFO(sMsg.c_str() );
		if( m_pProcessController)
		{
			m_pProcessController->ReportProgress(sMsg.c_str());
		}

		::DeleteFile(sPath);
	}

	for (unsigned int i = 0; i<vecProfiles.size(); i++)
	{
		sPath = BuildExtendDatPath(vecProfiles[i]) + _T("\\") + GetExtendFilename();
		CStdString sMsg;
		sMsg.Format(_T("Deleting %s"), sPath.c_str() );
		LOG_WS_INFO(sMsg.c_str() );
		if( m_pProcessController)
		{
			m_pProcessController->ReportProgress(sMsg.c_str());
		}

		::DeleteFile(sPath);
	}
}
Esempio n. 3
0
CString GetOS()
{
	CString Response;
	OS_VERSION_INFO osvi;
	char sText[512]="";
	char sBuf[100]="";
	ZeroMemory(&osvi,sizeof(OS_VERSION_INFO));
	
	_stprintf(sText, _T("\nOperating System\n"));
	if (GetOSVersion(&osvi)) {                                           
//		_stprintf(sText, _T("Emulated OS: "));
		
		switch (osvi.dwEmulatedPlatformId) {
		case PLATFORM_DOS:               
			{
				_stprintf(sBuf, _T("Dos"));
				break;
			}
		case PLATFORM_WINDOWS31:         
			{
				_stprintf(sBuf, _T("Windows"));
				break;
			}
		case PLATFORM_WINDOWSFW:         
			{
				_stprintf(sBuf, _T("Windows For Workgroups"));
				break; 
			}
		case PLATFORM_WIN32S:
			{
				_stprintf(sBuf, _T("Win32s"));
				break; 
			}
		case PLATFORM_WINDOWS_CE:
			{
				_stprintf(sBuf, _T("Windows CE"));
				break;
			}
		case PLATFORM_WINDOWS:
			{
				if (IsWindows95(&osvi))
					_stprintf(sBuf, _T("Windows 95"));
				else if (IsWindows95SP1(&osvi))
					_stprintf(sBuf, _T("Windows 95 SP1"));
				else if (IsWindows95OSR2(&osvi))
					_stprintf(sBuf, _T("Windows 95 OSR2"));
				else if (IsWindows98(&osvi))
					_stprintf(sBuf, _T("Windows 98"));
				else if (IsWindows98SP1(&osvi))
					_stprintf(sBuf, _T("Windows 98 SP1"));
				else if (IsWindows98SE(&osvi))
					_stprintf(sBuf, _T("Windows 98 Second Edition"));
				else
					_stprintf(sBuf, _T("Windows ??"));
				break;
			}
		case PLATFORM_NT_WORKSTATION:
			{
				if (IsWindows2000(&osvi))
					_stprintf(sBuf, _T("Windows 2000 Professional"));
				else
					_stprintf(sBuf, _T("Windows NT Workstation"));
				break;
			}
		case PLATFORM_NT_PRIMARY_DOMAIN_CONTROLLER:         
			{
				if (IsWindows2000(&osvi))
					_stprintf(sBuf, _T("Windows 2000 Server (Acting as Primary Domain Controller)"));
				else
					_stprintf(sBuf, _T("Windows NT Server (Acting as Primary Domain Controller)"));
				break;
			}
		case PLATFORM_NT_BACKUP_DOMAIN_CONTROLLER:         
			{
				if (IsWindows2000(&osvi))
					_stprintf(sBuf, _T("Windows 2000 Server (Acting as Backup Domain Controller)"));
				else
					_stprintf(sBuf, _T("Windows NT Server (Acting as Backup Domain Controller)"));
				break;
			}
		case PLATFORM_NT_STAND_ALONE_SERVER:
			{
				if (IsWindows2000(&osvi))
					_stprintf(sBuf, _T("Windows 2000 Server (Acting as Standalone Sever)"));
				else
					_stprintf(sBuf, _T("Windows NT Server (Acting as Standalone Sever)"));
				break;
			}
		case PLATFORM_WINDOWS_TERMINAL_SERVER:
			{
				_stprintf(sBuf, _T("Windows NT Terminal Server"));
				break;
			}
		case PLATFORM_NT_ENTERPRISE_SERVER:
			{
				_stprintf(sBuf, _T("Windows NT Enterprise Edition"));
				break;
			}
		default: 
			{
				_stprintf(sBuf, _T("Unknown OS"));
				break;
			}
		}
	}                     
	_tcscat(sText, sBuf);
//	_stprintf(sBuf, _T(" v%d."), osvi.dwEmulatedMajorVersion);
//	_tcscat(sText, sBuf);     
//	_stprintf(sBuf, _T("%02d "), osvi.dwEmulatedMinorVersion);
//	_tcscat(sText, sBuf);                           
	if (osvi.wEmulatedServicePack)       
	{
		_stprintf(sBuf, _T(" Service Pack %d"), osvi.wEmulatedServicePack);
		_tcscat(sText, sBuf);
	}
	if (osvi.dwEmulatedBuildNumber)
	{
		_stprintf(sBuf, _T(" (Build %d)"), osvi.dwEmulatedBuildNumber);
		_tcscat(sText, sBuf);           
	}
	_tcscat(sText, _T(" \r\n"));
	;

	return sText;
}
CStdString OutlookExtensionCacheNuker::BuildExtendDatPath(CStdString sProfileDirName)
{
	LOG_WS_INFO(_T("Getting path for extend.dat"));

	if( m_pProcessController)
	{
		m_pProcessController->ReportProgress(_T("Getting path for extend.dat"));
	}

	CStdString sPath;
	CStdString sTest;

	// Outlook98 is ambigiuous
	if ( IsOutlook98() )
	{
		sPath = GetWindowsPath();
		if( IsWindows98() )
		{
			return sPath;
		}

		sTest.Format(_T("%s\\extend.dat"), sPath.c_str());
		if( _taccess(sTest.c_str(), 0) == 0)
		{
			CStdString sMsg;
			sMsg.Format(_T("Extend.dat found at %s"), sTest.c_str() );
			LOG_WS_INFO(sMsg.c_str() );
			if( m_pProcessController)
			{
				m_pProcessController->ReportProgress(sMsg.c_str() );
			}
			return(sPath);
		}
	}

	sPath = GetLocalAppDataPath();
	if (!(IsWindows98() && sProfileDirName.IsEmpty()))
	{						
		int nPos = sPath.Find(_T("\\"), GetProfilesRoot().size()+1);
		sPath = GetProfilesRoot() + _T("\\") + sProfileDirName + _T("\\") + sPath.Right(sPath.size() - nPos - 1);
	}

	sPath += _T("\\Microsoft\\Outlook");

	sTest.Format(_T("%s\\extend.dat"), sPath.c_str());
	if( _taccess(sTest.c_str(), 0) == 0)
	{
		CStdString sMsg;
		sMsg.Format(_T("Extend.dat found at %s"), sTest.c_str() );
		LOG_WS_INFO(sMsg.c_str() );
		if( m_pProcessController)
		{
			m_pProcessController->ReportProgress(sMsg.c_str());
		}
	}
	else
	{
		LOG_WS_INFO(_T("Extend.dat not found"));
		if( m_pProcessController)
		{
			m_pProcessController->ReportProgress(_T("Extend.dat not found"));
		}
	}

	return sPath;
}