5

C# TaskManager オブジェクトを使用してタスクを作成するコードがあります。Windows 7 では正常に動作しますが、Windows XP (およびおそらく他の Windows) では、タスクのデフォルト ユーザーがシステムであり、GUI を表示するためのセッションがないため、まったく動作しません。コントロール パネル ウィジェットで作成したタスクを手動で変更して、ユーザーがログインしているときにのみ特定のユーザーに対してのみジョブを実行するように設定すると、すべてが完全に機能します。しかし、何時間も検索したにもかかわらず、C# オブジェクトでこれらのオプションを設定するためのオプションが見つかりません。既存のオブジェクトを使用したソリューションを知っている人はいますか? 手動でスケジューラ EXE を実行し、コマンドラインで何かを渡すようにすべてを書き直すのは嫌です。

Q

4

1 に答える 1

4

よし、答えがわかった!

私はそれを認識していませんでしたが、サードパーティのタスク スケジューラ マネージ ラッパーを使用していました (コードのその部分を書いてからしばらく経ちました)。少し前にそのページに出くわしましたが、その例の中にまさに私が必要としていたものがありました! コンテキスト内の詳細なソリューションはこちらにありますが、重要な部分は次のとおりです。

// Create a new task definition and assign properties
TaskDefinition td = ts.NewTask();
td.Principal.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
td.Principal.LogonType = TaskLogonType.InteractiveToken;

助けてくれてありがとう!

于 2012-01-19T20:41:31.203 に答える