【问题标题】:Determine version of Microsoft Windows using perl?使用 perl 确定 Microsoft Windows 的版本?
【发布时间】:2013-04-24 10:08:58
【问题描述】:

我正在 Windows 上创建一个小的 perl 脚本。 我想确定 Windows 的版本,即 XP、Vista、7、8 等。 我怎样才能得到这些信息? 谢谢。

更新: 我想知道运行脚本的 Windows 版本! 请添加一些关于如何使用 API 的代码,因为我是初学者并且对 perl 不太了解。

【问题讨论】:

  • 检查this 一个。
  • 正确答案中没有一个选项提供所需的信息!

标签: windows perl operating-system version


【解决方案1】:

试试Win32:

#!/usr/bin/env perl

use 5.014;
use strict;
use warnings;

use Win32;

say Win32::GetOSDisplayName();
say for Win32::GetOSName();
say for Win32::GetOSVersion();

如果这还不够,您可以通过Win32::API 致电GetVersionEx

【讨论】:

  • 谢谢@Sinan,这满足了我的需求。
  • 不适用于版本 > 6.2 ! GetVersionEx 已被弃用,win32 模块也使用此 Windows API。 :-(
【解决方案2】:

来自http://perldoc.perl.org/perlvar.html

$^O

此 Perl 副本所在的操作系统的名称 在配置过程中确定。举些例子 请参阅 perlport 中的平台。

该值与 $Config{'osname'} 相同 .另见 Config 和 -V 命令行开关记录在 perlrun。

在 Windows 平台中,$^O 不是很有帮助:因为它是 总是 MSWin32 ,它没有区别 95/98/ME/NT/2000/XP/CE/.NET。使用 Win32::GetOSName() 或 Win32::GetOSVersion()(参见 Win32 和 perlport)来区分 变种。

【讨论】:

  • 我不是在问构建 perl 的平台!我在问它正在运行的机器。
  • 这就是我们所说的。变量$^O 包含该信息。然而,对于大多数版本的 Windows,它将始终返回 "MSWin32"。因此,对于 Windows,您将需要使用上述功能。这与构建 perl 无关
  • 你能告诉我如何使用这些功能吗?我收到一些错误“Undefined subroutine &Win32::GetOSName called”
  • 我尝试过使用 GetOSVersion(),它给出了一些数字,不知道该怎么做,根据perlmonks.org/?node_id=144660
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 2013-08-07
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多