如何在C#中使用TaskScheduler设置"仅在登录时运行"和"运行为"?

Qui*_*iex 5 .net c# scheduler taskmanager

我有代码使用C#TaskManager对象来创建任务.在Windows 7上它工作正常,但在Windows XP(可能是其他Windows)上根本不起作用,因为该任务的默认用户是系统,因此没有用于显示GUI的会话.如果我在控制面板小部件中手动修改创建的任务,将作业设置为仅在用户登录时才运行,并且仅针对特定用户,则一切正常.但是,尽管进行了数小时的搜索,我看不到在C#对象中设置这些选项的选项.有人知道现有对象的解决方案吗?我不想重写所有内容来手动运行调度程序EXE并通过命令行传入内容.

Q

Qui*_*iex 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;
Run Code Online (Sandbox Code Playgroud)

感谢您尝试提供帮助!