2010-09-30 106 views
0

我正在开发一个Windows应用程序(它取决于DirectShow,所以没有Linux等)。如何检查当前的操作系统是否为Windows 7?

现在,它将在XP和Windows 7(不支持Vista)中运行。

然而,有一段代码,其行为在XP或Windows 7完全不同,所以我需要知道我是哪个系统,做一个解决方法。由于我不支持Vista,并且即使我这样做,我猜也不会有太大的区别 - 我不在乎Vista和7是否被识别为相同的操作系统,尽管我宁愿它们不是。

以防万一,我在C++开发的,我不想维护两个不同的可执行文件,我宁愿一个语言无关的方式来做到这一点。

所以,我的问题:什么是正确的方式(TM)在运行时检查哪个Windows版本运行?

+0

您在跳过Vista时支持XP和7?我很乐意听到推理说... – 2010-09-30 08:37:49

+0

@Greg:因为Vista是我们非常想忘记的事情之一,很像Windows ME,Windows 1.0和MSDOS 4 :-) – paxdiablo 2010-09-30 08:38:50

+0

@paxdiablo - 我从来没有真正理解人们与Vista的问题。我现在在我的笔记本电脑上使用它,因为它似乎不值得重新安装7的工作。确定现成的版本有几个可用性抱怨,但运行SP2完全没问题。 – 2010-09-30 08:44:17

回答

2

article由纳文引用具有重要的话,这可能是有关您的方案,也:

识别当前操作系统通常不是确定某个特定的操作系统的功能是否是最好的方法当下。这是因为操作系统可能在可再发行DLL中添加了新功能。不是使用GetVersionEx来确定操作系统平台或版本号,而是测试该功能本身的存在。

使用IsOS函数可以检查特定功能。

GetVersionEx可用于检索的操作系统版本。但是,请注意,根据兼容模式是否生效,操作系统将有不同的标识。

+0

谢谢。我并不支持任何新功能,只是在应用一些丑陋的低级别黑客行为(而其他一些行为与正常情况下的行为不同)时,一些DirectShow过滤器在XP和7中似乎表现不同。目前,了解操作系统版本似乎已经足够了。 – raven 2010-10-01 09:46:05

2

请参阅这篇文章MSDN获得OS版本编程。

+0

非常感谢。你能编辑你的答案以包含函数名称,所以万一链接失败,任何发现这个页面的人都可以搜索它们吗? – raven 2010-09-30 09:03:57

相关问题