C# 如何设置;不要存储密码。该任务只能通过编程方式在TaskScheduler中访问本地计算机资源

C# 如何设置;不要存储密码。该任务只能通过编程方式在TaskScheduler中访问本地计算机资源,c#,taskscheduler,C#,Taskscheduler,我以编程方式创建TaskScheduler的任务并运行它。 我正在使用以下代码: var taskDefinition = taskService.NewTask(); taskDefinition.RegistrationInfo.Author = WindowsIdentity.GetCurrent().Name; taskDefinition.RegistrationInfo.Description = "Runs Programm"; // TaskLogonType.S4U = ru

我以编程方式创建TaskScheduler的任务并运行它。 我正在使用以下代码:

var taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Author = WindowsIdentity.GetCurrent().Name;
taskDefinition.RegistrationInfo.Description = "Runs Programm";

// TaskLogonType.S4U = run wether user is logged on or not 
taskDefinition.Principal.LogonType = TaskLogonType.S4U;

var action = new ExecAction(path, arguments);
taskDefinition.Actions.Add(action);
taskService.RootFolder.RegisterTaskDefinition("TaskName", taskDefinition);

//get task:
var task = taskService.RootFolder.GetTasks().Where(a => a.Name == "TaskName").FirstOrDefault();

try
{
    task.Run();
}
catch (Exception ex)
{
    log.Error("Error starting task in TaskSheduler with message: " + ex.Message);
}
任务已创建,我可以在TaskScheduler窗口中看到它,但有一个复选框我想取消选中。 它被称为“不存储密码。该任务将只能访问本地资源”

我发现了如何检查上面的单选按钮,上面写着“无论用户是否登录都运行” 这是通过以下方式设置的:

taskDefinition.Principal.LogonType = TaskLogonType.S4U;
但是我如何将下面的复选框设置为false呢?

文档会这样说

使用现有交互令牌运行任务。用户必须使用用户登录服务(S4U)登录。使用S4U登录时,系统不会存储密码,并且无法访问网络或加密文件

所以我想,你是否设置了储存密码的复选框并不重要

这应该适用于 任务\u登录\u S4U和
任务\登录\服务\帐户

我最终通过以下方式解决了这个问题:

taskService.RootFolder.DeleteTask("TaskName", false);

var taskDefinition = taskService.NewTask();                        
taskDefinition.RegistrationInfo.Author = WindowsIdentity.GetCurrent().Name;

taskDefinition.RegistrationInfo.Description = "Runs Task with arguments: " + arguments;
taskDefinition.Principal.LogonType = TaskLogonType.InteractiveTokenOrPassword;

var action = new ExecAction(path, arguments);
taskDefinition.Actions.Add(action);
taskService.RootFolder.RegisterTaskDefinition("TaskName", taskDefinition, TaskCreation.Create, "domain\\user", password, TaskLogonType.InteractiveTokenOrPassword);

//get task:
var task = taskService.RootFolder.GetTasks().Where(a => a.Name == ("TaskName").FirstOrDefault();
log.Info("Start task " + task.Name + " with arguemtns " + arguments);

try
{
    task.Run();
}
catch (Exception ex)
{
    log.Error("Error starting task in TaskSheduler with message: " + ex.Message);
}

那你想要什么?无论用户是否已登录并准备好存储密码,您是否希望在特定用户下运行服务?是的,我两者都需要。事实上,我真的不明白这个设置意味着什么,但是我尝试了这个设置(通过在每只手的UI中设置它们),并且它使用了这个设置。但我需要以编程方式设置此设置。是的,这很重要。只有我想要的设置适合我。我两个都试过了。你有:taskDefinition.Principal.LogonType=TaskLogonType.S4U;尝试将Principal.UserId设置为某个用户,并将Principal.RunLevel设置为leastPrivilege感谢您的建议,不幸的是,这无助于它的工作。谢谢但是你必须设置密码。糟糕的安全过程。