Пренасяне на C++ приложение от XP към Vista/7

Имам C++ приложение, което съм написал за Windows XP, и бих искал да го пренеса за използване в Windows Vista/7. Той използва малко MFC (за сериен вход/изход) и ATL (за WMI), но основно използва добрия стар моден Windows API. Кои са някои от препоръките, които трябва да имам предвид, когато пренасям приложението си? Благодаря.


person Jim Fell    schedule 10.12.2010    source източник


Отговори (3)


Вероятно не е нужно да правите нищо. Като цяло приложенията, написани за XP, работят добре на Vista и Windows 7. (Драйверите на устройствата и друг такъв код на ниско ниво може да са различна история.)

Имате ли проблеми с стартирането му на Vista или Windows 7? Опитахте ли дори?

Някои възможни проблеми:

  • сигурност (приема ли вашето приложение, че работи като администратор и има пълен контрол над машината?)
  • козметични проблеми (поради промени във външния вид на прозореца и управлението във Vista и 7)
  • твърдо кодирани пътища на файлове/директории
  • много повече потребители използват 64-битови версии на Windows Vista и 7, отколкото някога са използвали 64-битова XP. Така че, ако имате 32-битово приложение и динамично зареждате код (DLL, ActiveX контроли и т.н.), може да се натъкнете на проблеми с 32 срещу 64 бита.
person Kristopher Johnson    schedule 10.12.2010
comment
+1, Допълнителна бележка, за хората, които се чудят Някое приложение е работило на XP, но не е работело на 7: Използвайте тези подробни указания за съвместимост с Windows 7. Освен това, ако това е нечие друго приложение, използвайте режим на съвместимост И/ИЛИ всъщност можете да стартирате Windows XP приложение в 7, ако имате XP режим е инсталиран =› Работи с XP във виртуален компютър. Инсталирате приложението си в XP. Намирате своето XP приложение в стартовото меню на 7! & следващия път стартирайте приложение (в рамка в стил XP), без да стартирате отново XP! - person vulcan raven; 19.09.2012

Инструментариумът за съвместимост на приложения ще ви помогне да откриете проблеми, които вашето приложение може да има при пренасяне към Vista/Win 7:

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

person Michael Burr    schedule 10.12.2010

Подкрепям предложението на Майкъл Бър за използване на инструментариума AppCompat, тъй като това ще забележи повечето от вероятните проблеми. Някои общи правила:

  • Не записвайте данни в HKLM освен в инсталатора. Използвайте HKCU. Всяко четене/запис в HKLM може да бъде виртуализирано и може да станете много странни поведение при превключване между потребителски акаунти
  • Не използвайте твърдо кодирани пътища, използвайте SHGetFolderLocation
  • Не записвайте данни в системни области като c:\windows, c:\program files и т.н. Ако трябва да запишете данни, които трябва да са достъпни за всички потребители, използвайте CSIDL_COMMON_APPDATA (c:\ProgramData по подразбиране)

Ако приемем, че така или иначе правите повечето от тези неща правилно, тогава мисля, че няма да имате сериозни проблеми с поддържането на Vista/Win7.

person the_mandrill    schedule 10.12.2010