微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Go中如何查询Windows计划任务信息?

如何解决Go中如何查询Windows计划任务信息?

计划任务有一个启动触发器。此任务运行一个 PowerShell 脚本,该脚本立即运行 Go 程序的可执行文件

Go 程序需要知道它是否因为启动时触发的计划任务而正在运行,以便它可以采取一些操作 doThingAfterBoottrigger()。如果计划任务是由于某种其他原因(不是因为启动触发器)而触发的,那么 doThingAfterBoottrigger() 不应发生。

PowerShell 脚本除了启动 Go 程序之外什么都不做。判断 doThingAfterBoottrigger() 是否发生的逻辑需要在 Go 程序中。

如果 Go 程序需要来自 PowerShell 脚本的信息来确定这是否是“启动后触发”情况,那么 PowerShell 脚本可能会将该数据传递给 Go 程序。例如,如果 Go 的 os.Getppid() 函数不存在,那么 Go 程序将 PID 作为参数是可以接受的,而 PowerShell 脚本将其 PID 作为参数传递给 Go 程序。

可能的解决方案:

  1. Go 程序依赖于 PowerShell,执行 PowerShell 的 Get-ScheduledTaskInfo 命令。
  2. 使用 Cgo,使用 mstask.h C++ 标头。

这应该完全在本机代码中完成,因此解决方案 1 不是首选。有没有我缺少的简单解决方案?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。