c# - 如何在 C# 中使用 TaskScheduler 设置 "run only if logged in"和 "run as"?

标签 c# .net scheduler taskmanager

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

最佳答案

好的,我找到答案了!

我没有意识到,但我一直在使用第三方 Task Scheduler Managed Wrapper (自从我编写那部分代码以来已经有一段时间了)这就解释了为什么很难找到帮助!刚才我偶然发现了那个页面,他们的示例中正是我所需要的! detailed solution in context can be found here ,但关键部分是:

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

感谢您的帮助!

关于c# - 如何在 C# 中使用 TaskScheduler 设置 "run only if logged in"和 "run as"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170236/

相关文章:

.net - 请学习F#的一些好资源

go - 为什么我们在 Go 调度器的设计中添加 P 而不是简单地更改 M?

c# - Nhibernate一对多添加元素

c# - C# 中的双射字典/映射

c# - 如何检查 UNC 路径中是否存在文件?

.net - 不匹配确切单词的正则表达式

c# - 使用 LINQ 按多个表中的多个属性有条件地对元素进行排序

c# - Visual Studio 2010 构建错误 - 来自 HRESULT : 0x800300FA (STG_E_ABNORMALAPIEXIT)) 的异常

linux-kernel - 关于sched : automated per tty task groups

linux - OS如何选择下一个要在CPU中运行的进程?