2010-08-09 106 views
4

我正在使用Microsoft Visual Studio 2008(VC9)編譯具有.dsw文件的項目。我已經有2010年和寧願使用它,但似乎這個DSW始建於2008年將VS2008編譯與Windows 7兼容的二進制文件

我想編譯生成的二進制這也是兼容Windows 7。我的問題:

  • 如果我使用2008進行編譯,生成的二進制文件是否與Windows 7兼容?我不確定在哪個版本的VS上啓動Windows 7支持。
  • 還是這與VS版本沒有關係,而是與Windows SDK有關?如果是這樣的話,我可以使用VS2008和更新的Windows SDK嗎?

有人可以請澄清。

回答

2

VS2010包含Windows SDK的7.0版本,而VS2008沒有。如果您希望應用程序利用跳轉列表等Windows 7功能,則需要Windows SDK v7.0。

由於您已經安裝了VS2010,您可以在VS2008中更改包含文件/ lib文件路徑,以指向Windows SDK v7.0,而不是VS2008提供的默認包含路徑。假設您需要該版本的SDK。

如果您不打算使用最新的Windows 7功能(例如功能區和跳轉列表),則不需要最新的Windows SDK。如果你正在爲最低公分母操作系統(即Windows XP)構建你的應用程序,那麼你應該沒問題使用VS 2008的默認設置。另一個問題是,如果您的代碼最初是在Windows Vista推出之前編寫的,那麼很可能它在Windows 7上無法正常工作,除非它以管理員模式運行,這是您想要避免的。解決這個問題的唯一方法是重寫大部分代碼以避免寫入某些受保護的目錄,並避免使用某些需要管理員權限的API。

5

微軟有很好的向後兼容性「故事」,所以你用任何版本的Visual Studio/Visual C++編譯的東西幾乎都可以與Windows 7兼容。相同的方式可能並不需要反向應用,即如果你使用在Windows 7中引入的API,當您嘗試在Windows的早期版本上運行時,您的應用程序將會出錯。

有一對夫婦的事情,但考慮:

  • 如果該項目最初寫入目標Windows XP或更早,可能會墜落UAC的犯規
  • 有更改目錄結構(例如因爲%systemdrive%\Documents and Settings變成了%systemdrive%\Users),它們很好地被Windows 7在`%systemdrive%'根目錄下創建的鏈接處理好,但是你可能會遇到這種情況。
+1

歸根結底不過,如果你是想確保你的代碼將在Win7的運行則需要對其進行測試。它很可能會運行,但您可能會遇到UAC,註冊表虛擬化,清單等問題。嘗試下載應用程序兼容性工具包並通過它運行程序,這將突出顯示問題區域,如寫入特權文件/註冊表區域。 – 2010-08-09 22:33:54

+0

「你可能會遇到UAC,註冊表虛擬化的問題,體現」 - 只有當你沒有努力編寫你的軟件從一開始就不需要管理權限。 – Rob 2010-08-20 23:08:39