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

相关问题