void SetCompatible()
{
//获取电脑版本
CString stOSysetemVerion;
int iVer = 0;
OSVERSIONINFOW OsVersionInfo;
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
GetVersionExW(&OsVersionInfo);
if (OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
if (OsVersionInfo.dwMinorVersion < 10)
{
stOSysetemVerion = _T("Windows95");
iVer = 1;
}
else if (OsVersionInfo.dwMinorVersion == 10)
{
stOSysetemVerion = _T("Windows98");
iVer = 2;
}
else
{
stOSysetemVerion = _T("WindowsMe");
iVer = 3;
}
}
else if (OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
if (OsVersionInfo.dwMajorVersion == 3)
{
stOSysetemVerion = _T("WindowsNT 3.51");
iVer = 4;
}
else if (OsVersionInfo.dwMajorVersion == 4)
{
stOSysetemVerion = _T("WindowsNT 4");
iVer = 5;
}
else if (OsVersionInfo.dwMajorVersion == 5)
{
if (OsVersionInfo.dwMinorVersion == 0)
{
stOSysetemVerion = _T("Windows 2000");
iVer = 6;
}
else if (OsVersionInfo.dwMinorVersion >= 1)
{
stOSysetemVerion = _T("Windows XP");
iVer = 7;//windows xp;
}
else if (OsVersionInfo.dwMinorVersion == 2)
{
stOSysetemVerion = _T("Windows 2003");
iVer = 12;//windows xp;
}
}
}
else if (OsVersionInfo.dwPlatformId == 3)
{
stOSysetemVerion = _T("Windows CE");
iVer = 8;
}
else
{
stOSysetemVerion = _T("No Name");
iVer = 9;
}
if (OsVersionInfo.dwMajorVersion == 6 && OsVersionInfo.dwMinorVersion == 0)
{
stOSysetemVerion = _T("vista");
iVer = 10;
}
if (OsVersionInfo.dwMajorVersion == 6 && OsVersionInfo.dwMinorVersion == 1)
{
stOSysetemVerion = _T("win7");
iVer = 11;
}
if ((OsVersionInfo.dwMajorVersion == 6) && (OsVersionInfo.dwMinorVersion == 2))
{
stOSysetemVerion = _T("win8");
iVer = 13;
}
if ((OsVersionInfo.dwMajorVersion == 6) && (OsVersionInfo.dwMinorVersion == 3))
{
stOSysetemVerion = _T("win8.1");
iVer = 14;
}
if ((OsVersionInfo.dwMajorVersion == 10) && (OsVersionInfo.dwMinorVersion == 0))
{
stOSysetemVerion = _T("win10");
iVer = 15;
}
CString strVer(L"");
switch (iVer)
{
case 7:
strVer = L"WINXP";
break;
case 10:
strVer = L"VISTARTM";
break;
case 11:
strVer = L"WIN7RTM ";
break;
case 13:
strVer = L"WIN8RTM";
break;
case 15:
strVer = L"WIN10RTM";
break;
default:
break;
}
//将版本写入注册表
TCHAR chValue[40];
_tcscpy(chValue, strVer);
HKEY hKey;
LPCTSTR strSubKey = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers";
long lRet = ::RegOpenKeyEx(HKEY_CURRENT_USER, strSubKey, 0, KEY_WRITE, &hKey);
if (lRet == ERROR_SUCCESS)
{
CString strExePath = g_strPath + L"XXXX.exe";
lRet = ::RegSetValueEx(hKey, strExePath, NULL, REG_SZ, (LPBYTE)&chValue, sizeof(chValue));
RegCloseKey(hKey);
}
}
//各版本号对于的字符串
Windows 95 对应WIN95
Windows 98 / Windows Me 对应WIN98
Windows NT 4.0 (Service Pack 5) 对应NT4SP5
Windows 2000 对应WIN2000
Windows XP 对应WINXP
Windows XP (Service Pack 2) 对应WINXPSP2
Windows XP (Service Pack 3) 对应WINXPSP3
Windows Server 2003 (Service Pack 1) 对应WINSRV03SP1
Windows Server 2008 (Service Pack 1) 对应WINSRV08SP1
Windows Vista 对应VISTARTM
Windows Vista (Service Pack 1) 对应VISTASP1
Windows Vista (Service Pack 2) 对应VISTASP2
Windows 7 对应WIN7RTM
Windows 8 对应WIN8RTM