通过代码将程序在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_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 ); }
相关文章推荐
- 巧妙解决程序运行在兼容模式下时window版本欺诈问题
- c#让程序在WIN7下兼容模式运行
- 用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式
- 判断程序是否运行的代码 (有点单例模式的味道)
- c#让程序在WIN7下兼容模式运行
- IE兼容模式和文本模式默认设置--代码引用
- 让你的win2000能运行98的程序如同xp兼容模式
- 当DataGridView控件通过代码在运行时设置了数据源,如何在运行时修改DataGridView控件的列
- 在运行程序时报错:"如果在 Code First 模式下使用,则使用 T4 模板为 Database First 和 Model First 开发生成的代码可能无法 正常运行。若要继续使用 Database First 或 Model First,请确保在执行应用程序的 config 文件中指 定 Entity Framework 连接字符串。若要将这些从 Database First 或 Mod
- Win7中使用兼容模式运行程序的方法
- Python GIL 系列之通过设置进程运行的CPU来提高Python程序的性能(续)
- HTML代码中,加这段声明 就可以 用IE7的方式 解析了,让IE8始终以IE7兼容模式运行网页
- 通过Debug模式运行来追踪程序的运行过程
- 程序中如何给自己设置硬件断点(通过程序代码设置数据断点而不使用JTAG)
- 【hadoop2.6.0】通过代码运行程序流程
- Python GIL 系列之通过设置进程运行的CPU来提高Python程序的性能
- 如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式
- win7特别功能xp兼容模式设置方法解决程序不兼容问题
- 如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式
- 设置所有JSP页面,让IE9使用兼容模式运行