用VBS修改(設(shè)置)系統(tǒng)時(shí)間和日期的代碼

字號(hào):


    用 VBS 把系統(tǒng)的時(shí)間修改到2038年1月19日3時(shí)14分07秒之后,這樣某些依賴于 Unix 時(shí)間戳的程序就會(huì)出問題。那么怎樣用 VBS 修改系統(tǒng)的時(shí)間呢
    那天跟別人聊到 Y2K38 問題,于是想到一個(gè)惡作?。河?VBS 把系統(tǒng)的時(shí)間修改到2038年1月19日3時(shí)14分07秒之后,這樣某些依賴于 Unix 時(shí)間戳的程序就會(huì)出問題。那么怎樣用 VBS 修改系統(tǒng)的時(shí)間呢?
    最簡(jiǎn)單也是最沒有技術(shù)含量的方法就是調(diào)用 cmd 的 date 和 time 命令:
    代碼如下:
    'Author: Demon
    'Website: http://demon.tw
    'Date : 2011/4/27
    Dim WshShell
    Set WshShell = CreateObject("wscript.Shell")
    WshShell.Run "cmd.exe /c date 2038-01-19", 0
    WshShell.Run "cmd.exe /c time 3:14:08", 0
    比較有技術(shù)含量的方法是用 WMI 的 Win32_OperatingSystem 類的 SetDateTime 方法:
    代碼如下:
    'Author: Demon
    'Website: http://demon.tw
    'Date : 2011/4/27
    dtmNewDateTime = "20380119031408.000000+480" 'UTC時(shí)間
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{(Systemtime)}\\" & strComputer & "\root\cimv2")
    Set colOSes = objWMIService.ExecQuery("Select * From Win32_OperatingSystem")
    For Each objOS In colOSes
    objOS.SetDateTime dtmNewDateTime
    Next
    Windows 7 在開啟 UAC 的情況下需要管理員權(quán)限才能修改時(shí)間,一點(diǎn)也不好玩。