【问题标题】:How can I get a future proof user friendly operating system version?如何获得面向未来的用户友好操作系统版本?
【发布时间】:2013-02-02 17:08:46
【问题描述】:

How can I determine the Windows version from a VB 6 app 这个问题有一个来自 Cody Gray 的非常有用的答案,它利用 GetVersionEx 和 Select Case 语句将 Windows 版本作为用户友好的字符串返回。

但是,给出的代码是有限的,因为所有返回值都是硬编码的,这意味着它不是面向未来的,每次新版本的 Windows 出现时都需要重写,例如 Windows 8。

除了使用 GetVersionEx 和 Select Case 语句之外,是否还有其他选择来检索用户友好的操作系统名称,该名称也将相对面向未来?

【问题讨论】:

  • 到底是什么让您认为 GetVersionEx 不会在未来的 Windows 版本中得到支持?
  • @HansPassant 如果您查看答案和示例代码,您会发现在使用 GetVersionEx 之后,您必须使用硬编码值执行复杂的 Select 语句。因此,每次发布新版本的 Windows 时,您都必须修复代码。
  • 所以这是关于显示操作系统的营销名称(“Windows UltraModern Spiffy Penultimate Lunar Edition”)?而不是出于某种功能原因检测平台?
  • 是的,这就是我所说的“用户友好”的意思
  • @HansPassant GetVersionEx 现已弃用:msdn.microsoft.com/en-us/library/windows/desktop/…

标签: windows vb6


【解决方案1】:

WMI classes 可用于提取所需数据,如下所示:

Public Function GetFriendlyOSVersion() As String
    Dim query As String
    query = "SELECT Caption FROM Win32_OperatingSystem"
    Dim results As Object
    Set results = GetObject("Winmgmts:").ExecQuery(query)
    Dim info As Object
    For Each info In results
        GetFriendlyOSVersion = info.Caption
    Next info
End Function

【讨论】:

  • 同样的问题也困扰着我,测试 Caption 是我所知道的唯一选择,但它安全吗?
  • 是的,我现在已经尝试过了,并在生产代码中实现了它,没有任何问题。
  • 啊,我知道它有效,只是不确定 Caption 是只读属性吗?
  • 我不确定它有多大帮助。当我在 Windows 10 技术预览版上运行它时,我收到了 Microsoft Windows Technical Preview
猜你喜欢
  • 2010-10-09
  • 2011-09-13
  • 2011-03-27
  • 1970-01-01
  • 2010-10-08
  • 2013-09-03
  • 1970-01-01
相关资源
最近更新 更多