如何授予程序更改 Windows 7 系统时间的权限?

chr*_*lly 0 windows batch-file

我有一些软件,要求在某个程序开始之前将 Windows 系统时间与物理原子钟* 同步。

timedate.cpl现在,用户在开始之前会收到修改时间的说明。

我想显示一个小时和分钟输入框,并允许用户在时间匹配时单击按钮,就像开始倒计时一样。这使得他们在点击我的按钮后可以更轻松地提取时间。为了实现这一点,我想运行这样的系统命令:

runas /noprofile /user:Administrator "time 12:34"
Run Code Online (Sandbox Code Playgroud)

但是,当我测试它时,它会要求我输入密码。

我想知道是否有某种方法可以让我的程序有权设置时间而不需要每次都输入密码?

笔记:

  • 该软件以登录用户身份运行
  • 必须能够独立运行该程序(例如,可以在远程位置使用电脑)。
  • 用户不属于 Windows 域

* 原子钟是合适的,因为时间在很长一段时间内不会漂移太多。精度不是一个因素。到目前为止,操作员实际上在开始步骤之前将时间写在一张纸上。

Rya*_*ies 5

您不指定这些计算机是否属于 Active Directory 域。我假设他们不是。

\n

您没有指定您正在运行的 Windows 版本。Vista 之前和之后的灾难是巨大的。它实际上是一个完全不同的操作系统。你不能只说“Windows”,因为 Windows 在其 20 多年的历史中已经发生了很大的变化。我假设是 Vista 或更高版本。

\n

在上面给出的示例中,您尝试以管理员身份运行程序,为此,您必须提供管理员密码。Windows 中没有与 sudo 直接等效的命令。目前还没有一种好的方法可以将管理员凭据嵌入到脚本中,或者以某种方式对其进行混淆,而不会产生将密码暴露给标准用户的危险风险。

\n

无论如何,您不授予程序权限或访问权。您向执行程序的用户授予权限。这些程序在该用户的安全上下文中执行。这些程序从执行它们的用户那里继承了安全权限。

\n

您可以使用组策略或本地计算机策略 (secpol.msc) 将此权限委派给用户或组。您需要编辑计算机配置\xe2\x87\x92 Windows 设置\xe2\x87\x92本地策略\xe2\x87\x92用户权限分配\xe2\x87\x92更改系统时间设置。

\n

SeSystemtime特权

\n

权限的技术名称是SeSystemtimePrivilege用户权限。

\n

但等等还有更多!更改系统时间是一项特权操作,用户可以恶意或意外地更改系统时间,从而造成严重破坏。因此,我认为此时您无法以标准用户身份更改系统时间。

\n

NTRights.exe -u JoeBlow +r SeSystemtimePrivilege2003 资源工具包中的 基本上与将用户添加到 secpol.msc 中的“更改系统时间”列表中执行相同的操作,但您仍然会收到错误A required privilege is not held by the client。即使您禁用 UAC,您仍然会收到错误消息。请记住,用户的安全令牌仅在登录时计算一次,因此如果您更改该用户的安全令牌,他们需要注销并重新登录才能使更改生效。但这并不重要 - 它仍然不允许您在不提升的情况下更改系统时间。

\n

此时,我会考虑做一些事情,比如编写一个 Windows 服务或一个作为本地系统运行的计划任务,标准用户可以通过某种方式与之交互,从而操纵系统时间。很明显,Windows 不希望标准用户乱搞系统时间。

\n

  • 精度并不是原子钟存在的原因。时钟的漂移可以忽略不计。操作员在一张纸上写下每个步骤的开始时间。有多个操作员,并且使用该方法实现了整体系统精度。整个过程正在慢慢自动化。 (2认同)
  • @ChrisMcKeown 如果用户手动更改时间,那么我们可以放心地假设精度根本不是问题。 (2认同)