Проверьте переход на летнее время с помощью WMI в Vista/Win7.

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

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


person Piskvor left the building    schedule 25.11.2009    source источник


Ответы (2)


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

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

person Hans Passant    schedule 26.11.2009
comment
Действительно, похоже, это работает на практике. Yay для недокументированного API. - person Piskvor left the building; 27.11.2009

Вот логическая функция, реализованная с использованием запроса 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
person DavidRR    schedule 05.11.2013