动态更改系统时间win7

时间:2016-05-01 13:58:53

标签: vb.net

Sub change_the_time(ByVal NewDateTime As DateTime)
        '
        Dim NewDateTime2 As DateTime
        '
        NewDateTime2 = #5/1/2016 5:52:15 PM#    ' try setting the time to this
        '
        'set the system date and time to this date and time - throw an exception if it can't
        Try
            TimeOfDay = NewDateTime2
        Catch ex As Exception
            MessageBox.Show("Could not set time. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
        End Try
End Sub

您好。 新网站,所以希望我遵守规则:-) 我的问题是如何成功更改系统时间?我在这个网站上找到的上述代码(以及关于我项目其他部分的大量信息 - 谢谢!)并且没有错误,但它总是引发异常。我作为管理员运行,我尝试更改UAC,但我仍然无法改变时间。我读到我需要设置SE_SYSTEMTIME_NAME权限,但我有这个设置,所以所有用户(即我)都有权利,但仍然没有。 MS参考here没有提供太多见解。我怀疑这是一个特权问题,但我似乎无法看到如何设置我需要的东西。我需要做什么才能让我的应用程序将系统时间更改为值?

更多信息......还有另外一个问题,但是它不是Vb而且我尝试过类似于该代码的内容,如下所示。还是

Private Sub change_the_time2(ByRef NewDateTime As DateTime)
  Dim d As DateTime
  d = #6/10/2011#   ' try setting the date to this before using NewDateTime
  Dim worked As Boolean
  '
  Try
      worked = setlocaltime(d)
      MsgBox(" 1. Did it work " & worked)
  Catch ex As Exception
      MsgBox(" 2. Did it work " & worked)
  End Try
End Sub

<DllImport("kernel32.dll", setLastError:=True)> _
Private Shared Function setlocaltime(ByRef time As System.DateTime) As Boolean

End Function

1 个答案:

答案 0 :(得分:1)

这基本上是this question的副本,正如评论中提到的那样。但是为了澄清VB.NET被认为是C#,根据该问题的答案之一:

  

在Windows Vista,7,8 OS上,这将需要UAC提示   获得成功执行的必要管理权限   SetSystemTime函数。

     

原因是调用进程需要   SE_SYSTEMTIME_NAME权限。期待SetSystemTime函数   协调世界时(UTC)中的SYSTEMTIME结构。它不会   按照需要工作。

     

取决于您获得的地点/方式   你的DateTime值,最好安全使用它   ToUniversalTime()在设置相应的值之前   SYSTEMTIME struct。

代码示例(针对VB.NET进行了修改):

/* [...] */

是的,您需要管理员权限。