gpt4 book ai didi

c# - 创建一个任务并以另一个任务的最高权限运行,

转载 作者:行者123 更新时间:2023-12-05 06:19:20 30 4
gpt4 key购买 nike

我创建了一个 C# 程序来创建远程作业,然后每 5 分钟生成一次后续进程以检查远程作业的状态。这是通过创建子任务的任务调度程序中的母任务完成的。

在我的本地机器上一切正常;但是,在生产中我有 2 个问题:

  • 我无法让生成的任务“无论用户是否登录都运行”- 它需要用户登录。
  • 创建时未选中“以最高权限运行”。

这是我用来从母任务创建任务的代码:

        {
TaskService ts = new TaskService();
TaskDefinition td = ts.NewTask();
//td.Settings.RunOnlyIfLoggedOn = false;
td.Principal.LogonType = TaskLogonType.S4U;
td.Settings.AllowDemandStart = true;
td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
td.Principal.RunLevel = TaskRunLevel.Highest;
td.RegistrationInfo.Description = taskDescription;
td.Triggers.Add(new TimeTrigger(DateTime.Now.AddMinutes(5)));
td.Actions.Add(action, arguments);
Microsoft.Win32.TaskScheduler.Task th = ts.RootFolder.RegisterTaskDefinition(taskName, td);
}

一些补充说明: - 母任务设置为无论用户是否登录都运行,并以最高权限运行。 - 子任务总是这样显示:task manager

我看过几个类似的帖子,但它们都缺少从任务创建任务的方面。

谢谢!

最佳答案

这将以最高权限运行任务,无论用户是否登录:

// Get the service on the local machine
using (TaskService ts = new TaskService())
{
// Create a new task definition and assign properties
TaskDefinition td = ts.NewTask();

// Logged on or not with highest privileges
td.Principal.LogonType = TaskLogonType.S4U;
td.Principal.RunLevel = TaskRunLevel.Highest;

// Simple task to kill an application
td.RegistrationInfo.Description = $"Kill application {key}";
td.Triggers.Add(new TimeTrigger(DateTime.Now.AddMinutes(1))
{
Repetition = new RepetitionPattern(TimeSpan.FromMinutes(5), TimeSpan.Zero)
});
td.Actions.Add(new ExecAction("taskkill", $"/F /IM {key}.exe", null));

ts.RootFolder.RegisterTaskDefinition($"Kill {key}", td);
}

enter image description here

关于c# - 创建一个任务并以另一个任务的最高权限运行,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60851150/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com