Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置;仅在登录时运行";及;作为“运行”;在C#中使用TaskScheduler?_C#_.net_Scheduler_Taskmanager - Fatal编程技术网

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

如何设置;仅在登录时运行";及;作为“运行”;在C#中使用TaskScheduler?,c#,.net,scheduler,taskmanager,C#,.net,Scheduler,Taskmanager,我有一些代码使用C#TaskManager对象来创建任务。在Windows7上,它可以正常工作,但在WindowsXP(可能还有其他Windows)上,它根本不工作,因为任务的默认用户是system,因此没有用于显示GUI的会话。如果我在“控制面板”小部件中手动修改创建的任务,将作业设置为仅在用户登录时运行,并且仅针对特定用户运行,那么一切都可以正常工作。但是,尽管搜索了几个小时,我在C#objects中没有看到设置这些选项的选项。有人知道现有对象的解决方案吗?我不想重写一切,手动运行调度程序E

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


好的,我找到了答案

我没有意识到这一点,但我一直在使用第三方(我已经有一段时间没有编写这部分代码了),这解释了为什么很难找到帮助!我刚才无意中发现了这一页,他们的例子正是我所需要的!问题是,但关键是:

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

谢谢你的帮助

任务调度器接口是基于COM的,例如需要isScheduledWorkItem::SetFlags()。没有“C#TaskManager对象”。也许你应该发布一个链接到你在某处找到的代码?谢谢!最后我自己发现了它,但你说的对,我使用了第三方包装,我没有意识到这一点!我发布了解决方案。@QuinxyvonBesiex您应该在下面添加您的答案,然后在所需的时间后,选择它作为答案-保持干净在某些情况下,它不仅仅是设置登录类型。如果仅此答案无法使代码正常工作,请参阅以下问题: