2010-12-10 63 views
1

移植C++应用程序我有,我已经为Windows XP编写的C++应用程序,我想将它移植在Windows Vista/7的使用。它使用一些MFC(用于串行I/O)和ATL(用于WMI),但它主要使用良好的Windows API。移植我的应用程序时,我应该记住什么?谢谢。从XP到Vista/7

回答

8

你可能不需要在所有做任何事情。在一般情况下,XP编写的应用程序在Vista和Windows 7中运行良好(设备驱动程序和其他这样的低级别的代码可能是一个不同的故事。)

你是否有在Vista或Windows 7上运行它的问题?你甚至尝试过吗?

一些可能的陷阱:

  • 安全性(是否你的应用程序假定它以管理员身份运行,并具有对机器的完全控制?)
  • 化妆品的问题(由于在Vista的窗口和控件的外观变化和7)
  • 硬编码文件/目录路径
  • 更多的用户运行64位版本的Windows Vista和7比以前使用的64位XP。所以,如果你有一个32位的应用程序,并且你动态加载代码(DLL,ActiveX控件等),你可能会遇到32位和64位的问题。
+0

+1,Addtional说明​​,供市民疑惑“用来在XP上运行,但在7没有运行某些应用程序”:使用[为了兼容Windows 7的这些详尽的指引](http://technet.microsoft.com/en -us /窗/应用compatibility.aspx)。此外,如果某人的其他应用程序,使用兼容模式和/或**,你其实也可以在7运行Windows XP应用程序**,如果你有[XP模式(http://microsoft.com/windows/virtual-pc/ download.aspx)installed =>它在虚拟PC中运行XP.You在XP中安装你的应用程序。您可以在7的开始菜单中找到您的** XP应用程序**! &下次运行应用程序(在XP风格的框架),而无需再次启动XP! – 2012-09-19 14:56:37

2

我第二次迈克尔·伯尔的建议使用程序兼容性工具包,为将会发现大部分可能的问题。一些一般的经验法则:

  • 不要在安装程序中向HKLM写入数据。使用HKCU。任何读取/写入HKLM可能virtualised,当用户帐户之间进行切换
  • 不要使用硬编码路径,使用SHGetFolderLocation
  • 不要将数据写入到系统领域,如c:\windowsc:\program files你可能会很奇怪的行为,等等如果你需要编写必须是提供给所有用户数据,使用CSIDL_COMMON_APPDATAc:\ProgramData默认)

假设你做这些东西大部分权反正那么我想你不会有任何支持Vista/Win7的主要问题。