1

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 ウィンドウに表示されますが、チェックを外したいチェックボックスが 1 つあります。「パスワードを保存しないでください。タスクはローカル リソースにのみアクセスできます」と呼ばれます。

その上にある「ユーザーがログオンしているかどうかにかかわらず実行する」というラジオボタンを確認する方法を見つけました。これは次の方法で設定されます。

taskDefinition.Principal.LogonType = TaskLogonType.S4U;

しかし、その下にあるチェックボックスも false に設定するにはどうすればよいでしょうか?

4

2 に答える 2

3

私は最終的にこれを解決しました:

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);
}
于 2016-06-30T06:21:43.087 に答える
0

ドキュメントは言う

既存のインタラクティブ トークンを使用してタスクを実行します。ユーザーは、ユーザー (S4U) ログオン用のサービスを使用してログオンする必要があります。S4U ログオンを使用する場合、パスワードはシステムに保存されず、ネットワークまたは暗号化ファイルへのアクセスはありません。

したがって、パスワードを保存するためのチェックボックスを設定するかどうかは問題ではないと思います。

TASK_LOGON_S4U および TASK_LOGON_SERVICE_ACCOUNT に適用する必要があります

于 2016-06-28T12:14:00.767 に答える