如何使用perl在Windows 10上获取操作系统版本

4
我一直使用Win32::GetOSVersion() Perl函数来获取目标操作系统版本。然而,这个API调用只支持Windows Server 2012及以下版本。

http://search.cpan.org/~jdb/Win32-0.52/Win32.pm

OS                      ID    MAJOR   MINOR
----------              ---   -----   -----
Win32s                   0      -       -
Windows 95               1      4       0
Windows 98               1      4      10
Windows Me               1      4      90

Windows NT 3.51          2      3      51
Windows NT 4             2      4       0

Windows 2000             2      5       0
Windows XP               2      5       1
Windows Server 2003      2      5       2
Windows Server 2003 R2   2      5       2
Windows Home Server      2      5       2

Windows Vista            2      6       0
Windows Server 2008      2      6       0
Windows 7                2      6       1
Windows Server 2008 R2   2      6       1
Windows 8                2      6       2
Windows Server 2012      2      6       2

有没有其他方法或途径可以在Windows 10上获取操作系统版本?


做一些网络搜索。 这个问题已经被问了无数次。 - David Heffernan
2个回答

1

还有一些其他获取原始数据的方法,您可以解析这些数据以适应您的应用程序,例如:

#!/usr/bin/perl

use strict;
use warnings;

my $ver = `ver`;

print "output of ver command: $ver\n";

my $reg = `reg query "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion" /v "ProductName"`;

# alternatively query for 'CurrentVersion' rather than 'ProductName' above 
print "output of registry query: $reg\n";

0

Win32 模块使用 GetVersionExA(请参见 Win32.xs),根据 msdn 的说法:

在 Windows 8.1 和 Windows 10 中,GetVersion 和 GetVersionEx 函数已被弃用。在 Windows 10 中,VerifyVersionInfo 函数也已被弃用。虽然您仍然可以调用这些弃用的函数,但如果您的应用程序没有专门针对 Windows 8.1 或 Windows 10,您将获得 Windows 8 版本(6.2.0.0)。

来源:msdn

另请参阅:IsWindows10OrGreater function

如果您能够修复它,请开启一个 pull request :)


这完全没有回答问题(“是否有其他方法...”)。 - IInspectable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接