您的位置:首页 > 编程语言

通过代码将程序在Win7/Win8下设置成以兼容模式运行

2013-06-20 23:55 585 查看
有时我们开发的程序在Wind7或Win8下面无法启动,必须将之设置成以兼容模式运行后才能启动。设置以兼容模式运行,可以手动修改程序的右键属性,将之设置成以兼容模式运行;但是对于开发出来的商用软件,让用户去手动设置不太现实,也不合适,所以需要我们通过代码将程序自动设置成以兼容模式运行。那么如何通过代码进行设置呢?

我们可以通过修改注册表来达到设置的目的。在HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers路径下,添加这样的项:"C:\Program Files\Test\Test.exe"="WINXP",其中"C:\Program Files\Test\Test.exe"是目标程序的安装路径,"WINXP"则表示以何种系统方式运行。各系统对应的字符串如下所示:(已经在Win8下通过手动设置以兼容性运行后查看注册表中对应字串进行了下列字串进行了验证,准确无误)

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
将程序设置成兼容模式的代码如下所示:(在Win8下将程序设置成以Win7兼容模式运行)

HKEY hKey;
LPCTSTR strSubKey = "Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers";
long lRet = ::RegOpenKeyEx( HKEY_CURRENT_USER, strSubKey, 0, KEY_WRITE, &hKey );
if ( lRet == ERROR_SUCCESS )
{
TCHAR achValue[] = { _T("WIN7RTM") };
CString strExePath = _T("C:\\Program Files\\Test\\Test.exe");
lRet  = ::RegSetValueEx( hKey, strExePath, NULL, REG_SZ, (LPBYTE)&achValue, sizeof(achValue) );
RegCloseKey( hKey );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐