Имам C++ приложение, което съм написал за Windows XP, и бих искал да го пренеса за използване в Windows Vista/7. Той използва малко MFC (за сериен вход/изход) и ATL (за WMI), но основно използва добрия стар моден Windows API. Кои са някои от препоръките, които трябва да имам предвид, когато пренасям приложението си? Благодаря.
Пренасяне на C++ приложение от XP към Vista/7
Отговори (3)
Вероятно не е нужно да правите нищо. Като цяло приложенията, написани за XP, работят добре на Vista и Windows 7. (Драйверите на устройствата и друг такъв код на ниско ниво може да са различна история.)
Имате ли проблеми с стартирането му на Vista или Windows 7? Опитахте ли дори?
Някои възможни проблеми:
- сигурност (приема ли вашето приложение, че работи като администратор и има пълен контрол над машината?)
- козметични проблеми (поради промени във външния вид на прозореца и управлението във Vista и 7)
- твърдо кодирани пътища на файлове/директории
- много повече потребители използват 64-битови версии на Windows Vista и 7, отколкото някога са използвали 64-битова XP. Така че, ако имате 32-битово приложение и динамично зареждате код (DLL, ActiveX контроли и т.н.), може да се натъкнете на проблеми с 32 срещу 64 бита.
Инструментариумът за съвместимост на приложения ще ви помогне да откриете проблеми, които вашето приложение може да има при пренасяне към Vista/Win 7:
Подкрепям предложението на Майкъл Бър за използване на инструментариума AppCompat, тъй като това ще забележи повечето от вероятните проблеми. Някои общи правила:
- Не записвайте данни в HKLM освен в инсталатора. Използвайте HKCU. Всяко четене/запис в HKLM може да бъде виртуализирано и може да станете много странни поведение при превключване между потребителски акаунти
- Не използвайте твърдо кодирани пътища, използвайте SHGetFolderLocation
- Не записвайте данни в системни области като
c:\windows
,c:\program files
и т.н. Ако трябва да запишете данни, които трябва да са достъпни за всички потребители, използвайтеCSIDL_COMMON_APPDATA
(c:\ProgramData
по подразбиране)
Ако приемем, че така или иначе правите повечето от тези неща правилно, тогава мисля, че няма да имате сериозни проблеми с поддържането на Vista/Win7.