2013-03-25 112 views
2

我正在使用OSVERSIONINFO来检查我的vb6应用程序中的操作系统。但我无法区分Windows 7和Windows Server 2008 R2,因为它们具有相同的版本号,dwMajorVersion和dwMinorVersion。所以如何区分这些。我认为它可以在vb.net中使用其他方法完成。但是如何在vb6中完成呢?用于查找Windows操作系统版本的VB6代码

+1

使用OSVERSIONINFOEX。 – Xearinox 2013-03-25 14:52:33

回答

6

正如Xearinox在上述评论中指出的那样,OSVERSIONINFOEX会返回更多信息。

尤其是,您可以检查wProductType以确定是否设置了VER_NT_WORKSTATION(0x0000001)。如果是,机器运行客户端操作系统,否则运行服务器。

OSVERSIONINFO MSDN entry的备注部分中的图表甚至有一列指出检测使用该结构项目的各种操作系统。

+0

hi lynn在我的vb6代码中,windows 7和windows server 2008 r2都将wProductType作为O返回。为什么会发生? – 2013-03-26 08:06:11

+0

@winman O或0?您必须为任何人提供一些代码才能够回答您的问题。 – Deanna 2013-03-26 11:02:04

+0

对不起,它返回0.我能够纠正错误,因为我之前使用OSVERSIONINFO所以我定义osinfo.dwOSVersionInfoSize = 148(其中我宣布osinfo为“Dim osinfo As OSVERSIONINFOEX”),当我将其更改为OSVERSIONINFOEX我没有改变dwOSVersionInfoSize,所以它在所有情况下返回0,因为wProductType是字节。然后我将其更改为osinfo.dwOSVersionInfoSize = 156,一切正常 – 2013-03-26 12:46:40

3

右键单击工具栏>组件和添加> Microsoft SysControl 6.0。 双击SYSINFO按钮添加表格和使用此代码

Private Sub Form_Load() 
    Dim HancyRockz as string 
    HancyRockz = "OsVersion :- " & SysInfo1.OSVersion & "/Built " & SysInfo1.OSBuild 
    Text1.Text=HancyRockz 
End Sub 
相关问题