BOOL __stdcall ReadReg( IN LPCTSTR pszPath, OUT CString& sText )
{
CFile RegFile;
if ( RegFile.Open( pszPath, CFile::modeRead ) )
{
wchar_t cFirstChar = 0;
UINT uLength = (UINT)RegFile.GetLength();
BYTE* pBuffer = new BYTE[uLength];
ZeroMemory( pBuffer, uLength );
if (RegFile.Read(&cFirstChar, sizeof(wchar_t)) > 0 && cFirstChar == (wchar_t)0xFEFF )
{
PCHAR pResult = NULL;
RegFile.Seek( sizeof( wchar_t ), CFile::begin );
RegFile.Read( pBuffer, uLength-sizeof( wchar_t ) );
UINT uResult = ::WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)pBuffer, -1, NULL, 0, NULL, NULL );
pResult = new CHAR[uResult];
ZeroMemory( pResult, uResult );
::WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)pBuffer, -1, pResult, uResult, NULL, NULL );
sText = CString( pResult );
delete pResult;
pResult = NULL;
}
else
{
RegFile.Read( pBuffer, uLength );
sText = CString( pBuffer );
}
RegFile.Close();
delete pBuffer; pBuffer = NULL;
return TRUE;
}
else
{
return FALSE;
}
}