You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法以管理员身份启动CMD执行net time命令同步时钟报1314错误求助

错误原因说明

系统错误1314本质是ERROR_PRIVILEGE_NOT_HELD,即进程缺少修改系统时间所需的SeSystemtimePrivilege权限,你的代码和配置存在三个核心问题:

  • Verb = "runas"属性仅在UseShellExecute = true时生效,你当前配置UseShellExecute = false,runas参数完全不起作用,无法触发提权逻辑
  • 你指定的域账号默认没有修改系统时间的权限,就算成功用该账号启动进程,也会触发权限不足报错
  • 你配置的net time命令参数中时间服务器地址存在多余空格,格式错误,也可能导致命令执行失败

解决方案

方案1:UAC提权启动(适用于当前运行程序的用户为本地管理员的场景)

修改进程启动配置,启用ShellExecute触发UAC提权,提权后进程默认拥有修改系统时间的权限:

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";                              
psi.Arguments = @"/c net time \\你的时间服务器地址 /set /y";
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = true;
psi.CreateNoWindow = true;
psi.Verb = "runas";

try
{
    Process.Start(psi);
}
catch (Win32Exception)
{
    // 处理用户取消UAC授权的逻辑
}

注意:该模式下无法重定向标准输出和标准错误,如果需要捕获命令执行结果请使用方案2。


方案2:给指定域账号分配权限(适用于域环境固定服务账号运行的场景)

  1. 打开本地安全策略:运行secpol.msc,依次展开「本地策略」→「用户权限分配」→「更改系统时间」
  2. 将你使用的域账号xxxxxx.ca\xxxxxx添加到权限列表中,重启计算机后生效
  3. 调整代码配置,移除无效的runas参数即可:
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";                              
psi.Arguments = @"/c net time \\你的时间服务器地址 /set /y";
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.UserName = "xxxxxx";
psi.Password = password;
psi.Domain = "xxxxxx.ca";
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.WorkingDirectory = @"C:\Windows\System32";

try
{
    Process p = psi.Start();
    p.WaitForExit();
    // 可读取p.StandardOutput、p.StandardError获取执行结果
}
catch (Exception ex)
{
    // 异常处理逻辑
}

方案3:调用原生API替代cmd命令

可以直接调用Windows原生APISetSystemTime修改系统时间,不需要额外启动cmd进程,稳定性更高,只要进程拥有修改系统时间的权限即可直接生效。

内容的提问来源于stack exchange,提问作者JC Nunez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:57:03