|
|
#include "pch.h"
#include "iedetect.h"
DWORD WINAPI DetectPrimaryLang(DETECTION_STRUCT *pDet, UINT cpID); DWORD WINAPI DetectLCID(DETECTION_STRUCT *pDet, LCID lcid); BOOL DetectCicero();
DWORD WINAPI DetectKoreanIME(DETECTION_STRUCT *pDet) { if(DetectCicero()) return DET_NEWVERSIONINSTALLED; else return DetectLCID(pDet, 1042); }
DWORD WINAPI DetectJapaneseIME(DETECTION_STRUCT *pDet) { if (DetectCicero()) return DET_NEWVERSIONINSTALLED; else return DetectLCID(pDet, 1041); }
DWORD WINAPI DetectTraditionalChineseIME(DETECTION_STRUCT *pDet) { if (DetectCicero()) return DET_NEWVERSIONINSTALLED; else return DetectLCID(pDet, 1028); }
DWORD WINAPI DetectSimplifiedChineseIME(DETECTION_STRUCT *pDet) { if (DetectCicero()) return DET_NEWVERSIONINSTALLED; else return DetectLCID(pDet, 2052); }
// Returns true if msctf.dll is installed on system
BOOL DetectCicero() { char szFile[MAX_PATH] = {0}; char szRenameFile[MAX_PATH] = {0}; DWORD dwInstalledVer, dwInstalledBuild;
GetSystemDirectory(szFile, sizeof(szFile)); AddPath(szFile, "msctf.dll"); ReadFromWininitOrPFRO(szFile, szRenameFile); if (*szRenameFile != '\0') GetVersionFromFile(szRenameFile, &dwInstalledVer, &dwInstalledBuild, TRUE); else GetVersionFromFile(szFile, &dwInstalledVer, &dwInstalledBuild, TRUE); return (dwInstalledVer != 0); }
DWORD WINAPI DetectLCID(DETECTION_STRUCT *pDet, LCID lcid) { DWORD dwRet = DET_NOTINSTALLED; DWORD dwInstalledVer, dwInstalledBuild;
dwInstalledVer = dwInstalledBuild = (DWORD)-1; if (GetSystemDefaultLCID() == lcid) { dwRet = DET_NEWVERSIONINSTALLED; } else { if (GetVersionFromGuid(pDet->pszGUID, &dwInstalledVer, &dwInstalledBuild)) dwRet = CompareVersions(pDet->dwAskVer, pDet->dwAskBuild, dwInstalledVer, dwInstalledBuild); } if (pDet->pdwInstalledVer && pDet->pdwInstalledBuild) { *(pDet->pdwInstalledVer) = dwInstalledVer; *(pDet->pdwInstalledBuild) = dwInstalledBuild; }
return dwRet; }
DWORD WINAPI DetectKoreanLangPack(DETECTION_STRUCT *pDet) { return DetectPrimaryLang(pDet, 949); }
DWORD WINAPI DetectJapaneseLangPack(DETECTION_STRUCT *pDet) { return DetectPrimaryLang(pDet, 932); }
DWORD WINAPI DetectSimpChineseLangPack(DETECTION_STRUCT *pDet) { return DetectPrimaryLang(pDet, 936); }
DWORD WINAPI DetectTradChineseLangPack(DETECTION_STRUCT *pDet) { return DetectPrimaryLang(pDet, 950); }
DWORD WINAPI DetectPrimaryLang(DETECTION_STRUCT *pDet, UINT cpID) { DWORD dwRet = DET_NOTINSTALLED; DWORD dwInstalledVer, dwInstalledBuild;
dwInstalledVer = dwInstalledBuild = (DWORD)-1; if (GetACP() == cpID) { dwRet = DET_NEWVERSIONINSTALLED; } else { if (GetVersionFromGuid(pDet->pszGUID, &dwInstalledVer, &dwInstalledBuild)) dwRet = CompareVersions(pDet->dwAskVer, pDet->dwAskBuild, dwInstalledVer, dwInstalledBuild); } if (pDet->pdwInstalledVer && pDet->pdwInstalledBuild) { *(pDet->pdwInstalledVer) = dwInstalledVer; *(pDet->pdwInstalledBuild) = dwInstalledBuild; }
return dwRet; }
|