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

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

Q

好的,我想出了答案!

我没有意识到这一点,但我一直在使用第三方任务计划程序托管包装器 (自从我写了部分代码以来已经有一段时间了),这就解释了为什么很难找到帮助! 我刚才偶然发现了那个页面,在他们的例子中就是我需要的东西! 上下文中的详细解决方案可以在这里找到 ,但关键部分是:

// 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; 

感谢您的帮助!