2010-12-10 61 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的主要問題。