我尝试使用SetSystemTime(来自Kernel32.dll)或者使用cmd.exe中的TIME
。
两者都失败了,TIME
给了我错误
客户不持有所需的特权。
我已经使用gpedit.msc
将本地/用户以及用户本身添加到security settings/Local Policies/Change the system time
。
我尝试使用AdjustTokenPrivileges( SeSystemtimePrivilege ...)
启用该权限,但我收到GrandPrivilege failed
错误。
我使用的是Win7 x32 Professional。
它是具有管理员权限的标准用户,但我尝试在没有"Run as Administrator"
的情况下更改时间,因为调用SetSystemTime
功能的程序不应该以"Run as Administrator"
开头。
我认为Change the system time
政策的目的正是针对这种情况,并且它也在MSDN上进行了描述
我不知道该怎么做。
答案 0 :(得分:1)
事实证明,尽管SeSystemTimePrivilege
没有为非管理员触发UAC,但 仍然会从管理员登录时生成的受限令牌中删除。结果是您可以使用组策略将SeSystemTimePrivilege
分配给非管理用户,但该策略对管理用户没有影响。
如果程序在管理用户运行时要求提升,则可以使用highestAvailable
清单设置。这样,如果用户是管理员,程序将仅要求提升。或者,您可以将程序设计为仅在实际需要设置时间时才要求提升。
如果无法接受提升提示,则必须安装系统服务以代替您的应用程序更改系统时间。