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
答案 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进行了修改):
/* [...] */
是的,您需要管理员权限。