[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我来改一下,不是因为lz所说的“无线网络不能用”,而是为了win7开启uac时双击能用,另外时区更改了不受影响
  1. call runAsAdmin()
  2. strNewDateTime = convertDateTime(getBaiduTime())
  3. call syncDateTime(strNewDateTime, Now())
  4. Function getBaiduTime()
  5.     Dim strUrl, strText
  6.     strUrl = "http://open.baidu.com/special/time/"
  7.     With CreateObject("MSXML2.XmlHttp")
  8.         .Open "GET", strUrl, False
  9.         .Send()
  10.         strText = .responseText
  11.     End With
  12.     strText = Split(LCase(strText), "window.baidu_time(")(1)
  13.     getBaiduTime = Int(Left(strText, 13)/1000)
  14. End Function
  15. Function convertDateTime(intUnixTime)
  16.     Dim objWMI, colOSes, objOS, tmZone
  17.     Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
  18.     Set colOSes =objWMI.ExecQuery("Select * from Win32_OperatingSystem")
  19.     For Each objOS in colOSes
  20.         tmZone = objOS.CurrentTimeZone
  21.     Next
  22.     intUnixTime = intUnixTime + tmZone * 60
  23.     convertDateTime = DateAdd("s", intUnixTime, "1970-1-1 00:00:00")
  24. End Function
  25. Sub syncDateTime(ByVal strNewDateTime, strOldDateTime)
  26.     Dim ss, objDateTime, dtmNewDateTime
  27.     ss = DateDiff("s", strOldDateTime, strNewDateTime)
  28.     If Abs(ss) < 1 Then
  29.         MsgBox "本机时间非常准确无需校对!"
  30.         Exit Sub
  31.     End If
  32.     Set objDateTime = CreateObject("WbemScripting.SWbemDateTime")
  33.     objDateTime.SetVarDate strNewDateTime, true
  34.     dtmNewDateTime = objDateTime.Value
  35.     Dim objWMI, colOSes, objOS
  36.     Set objWMI = GetObject("winmgmts:{(Systemtime)}\\.\root\cimv2")
  37.     Set colOSes =objWMI.ExecQuery("Select * from Win32_OperatingSystem")
  38.     For Each objOS in colOSes
  39.         objOS.SetDateTime dtmNewDateTime
  40.     Next
  41.     MsgBox "校准前:" & strOldDateTime & vbLf & "校准后:" & Now()
  42. End Sub
  43. Sub runAsAdmin()
  44.     Dim objWMI, colOSes, objOS, strVer
  45.     Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
  46.     Set colOSes =objWMI.ExecQuery("Select * from Win32_OperatingSystem")
  47.     For Each objOS in colOSes
  48.         strVer = Split(objOS.Version, ".")(0)
  49.     Next
  50.     If CInt(strVer) >= 6 Then
  51.         Dim objShell
  52.         Set objShell = CreateObject("Shell.Application")
  53.         If WScript.Arguments.Count = 0 Then
  54.             objShell.ShellExecute "WScript.exe", _
  55.                 """" & WScript.ScriptFullName & """ OK", , "runAs", 1
  56.             Set objShell = Nothing
  57.             WScript.Quit
  58.         End If
  59.     End If
  60. End Sub
复制代码
1

评分人数

    • hnldwhm52: 谢谢apang老师旳热心指教解答!技术 + 1

TOP

回复 7# yiwuyun


    如你所说,OK就是一参数名字,可以用其它字符替代,但它是WScript.exe的参数,WScript.Arguments.Count 就是WScript.exe的参数个数
如果把它当作objShell.ShellExecute 的参数,那它是多余的

TOP

返回列表