【问题标题】:Program is started by Task Scheduler (in Windows 10) with '/ru SYSTEM' can't execute other programs?程序由任务计划程序(在 Windows 10 中)启动,使用“/ru SYSTEM”无法执行其他程序?
【发布时间】:2021-03-22 17:08:39
【问题描述】:

我正在制作一个可以在后台运行的简单程序,然后在 Windows 中打开一个 URL。我使用任务计划程序来实现它。它包含两部分:程序和批处理文件。在程序代码中,我使用这个函数在浏览器中打开我的 URL:

func openBrowser(url string) bool {
    var args []string
    switch runtime.GOOS {
    case "darwin":
        args = []string{"open"}
    case "windows":
        args = []string{"cmd", "/c", "start"}
    default:
        args = []string{"xdg-open"}
    }

    cmd := exec.Command(args[0], append(args[1:], url)...)
    fmt.Println(cmd)
    return cmd.Start() == nil
}

为了在后台运行我的程序,我只需要创建一个批处理文件,它可以帮助我运行多个命令,以通过任务计划程序中的程序创建任务。在 .bat 文件中,我使用这些命令:

schtasks /create /xml "Forward_Base.xml" /tn "Forward" /ru SYSTEM
schtasks /run /tn "Forward"

其中 Forward_Base.xml 是我导出的任务计划程序文件。当我启动这个批处理文件时,任务被创建并运行。但是打开浏览器的命令不起作用。然后,当我删除参数 /ru SYSTEM 并再次重新运行批处理文件时。我的程序可以运行,但是它不再在后台运行了!

所以我的问题是 /ru SYSTEM 是如何影响我的程序的,我如何在运行 openBrowser() 的同时同时使用此功能?谢谢!

P/S:很抱歉,由于安全原因,这里没有上传完整的文件或代码。

【问题讨论】:

    标签: windows scheduled-tasks


    【解决方案1】:

    我有一个解决方案。由于 Windows 中的某些策略,当以 SYSTEM 角色运行程序时,一切都将以 SYSTEM 角色执行。这意味着我的程序打开了一个浏览器,但它在另一个世界中(我通过检查任务管理器注意到这一点)。

    所以解决方案是将我的执行文件移动到启动文件夹或 Windows。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2021-07-12
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      相关资源
      最近更新 更多