Проверьте время сэкономить на дневном свете с WMI на Vista/Win7

StackOverflow https://stackoverflow.com/questions/1797758

  •  22-09-2019
  •  | 
  •  

Вопрос

Как мне узнать, имеет ли компьютер, на котором я нахожусь дневное время, вступает в силу? (желательно с использованием WMI)

Согласно с Эта статья в Technet, Я мог бы запрашивать SELECT DaylightInEffect FROM Win32_ComputerSystem, но собственность DaylightInEffect не поддерживается на Vista или Win7. Поскольку моя программа будет работать в различных системах (XP, Vista, 7), я был бы признателен за какой -то портативный способ выяснения.

Это было полезно?

Решение

Задокументированный список поддерживаемых ОС не является точным, он отлично работает на Win7, когда я пробую его. Я не могу придумать никакой причины, по которой это не будет поддержано ни в одной другой ОС, легко узнать с API Win32 (GetTimeZoneinFormation).

Вы можете использовать Wmicodecreator Для быстрой проверки.

Другие советы

Вот логическая функция, которая реализована с использованием запроса WMI, упомянутого в вопросе.

(Связанный: Как я могу определить смещение часового пояса с помощью VBScript?)

Function IsDaylightInEffect()
    Const sComputer = "."

    Dim oWmiService : Set oWmiService = _
        GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
                  & sComputer & "\root\cimv2")

    Set cItems = oWmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem")

    For Each oItem In cItems
        IsDaylightInEffect = oItem.DaylightInEffect
        Exit For
    Next
End Function
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top