将C ++应用程序从XP移植到Vista / 7

时间:2010-12-10 22:04:21

标签: c++ windows-7 windows-vista windows-xp porting

我有一个我为Windows XP编写的C ++应用程序,我想将其移植到Windows Vista / 7上使用。它使用一些MFC(用于串行I / O)和ATL(用于WMI),但它主要使用良好的OL'老式的Windows API。在移植我的应用程序时,我应该记住哪些东西?感谢。

3 个答案:

答案 0 :(得分:8)

您可能根本不需要做任何事情。一般来说,为XP编写的应用程序在Vista和Windows 7上运行良好。(设备驱动程序和其他类似的低级代码可能是不同的故事。)

在Vista或Windows 7上运行它时遇到问题吗?你有没试过?

一些可能的问题:

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

答案 1 :(得分:6)

应用程序兼容性工具包将帮助您发现应用程序可能已移植到Vista / Win 7的问题:

http://www.microsoft.com/downloads/en/details.aspx?familyid=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18&displaylang=en

答案 2 :(得分:2)

我的第二个Michael Burr建议使用AppCompat工具包,因为这会发现大多数可能存在的问题。一些一般的经验法则:

  • 除安装程序外,不要将数据写入HKLM。使用HKCU。对HKLM的任何读/写可能是virtualised,在用户帐户之间切换时可能会出现非常奇怪的行为
  • 请勿使用硬编码路径,请使用SHGetFolderLocation
  • 不要将数据写入c:\windowsc:\program files等系统区域。如果确实需要编写必须可供所有用户使用的数据,请使用CSIDL_COMMON_APPDATA(默认为c:\ProgramData

假设你无论如何都做了大部分这些事情,那么我认为你不会有任何支持Vista / Win7的重大问题。