【发布时间】:2016-11-30 13:12:15
【问题描述】:
我正在创建一个应用程序,该应用程序在首次登录时为每个用户创建计划任务。我正在使用 NuGet 包 Task Scheduler Managed Wrapper 2.5.21。当 exe 在登录时运行时,会出现拒绝访问错误。以管理员身份手动运行 exe 时,会创建计划任务。我该如何克服这个问题?
string installPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
using (TaskService ts = new TaskService())
{
TaskDefinition td = ts.NewTask();
td.Actions.Add(new ExecAction("MyExe.exe", null, installPath));
td.Triggers.Add(new SessionStateChangeTrigger
{
StateChange = TaskSessionStateChangeType.SessionUnlock,
UserId = Environment.UserName
});
td.Principal.RunLevel = TaskRunLevel.Highest;
td.Principal.LogonType = TaskLogonType.InteractiveToken;
ts.RootFolder.RegisterTaskDefinition("task_" + Environment.UserName, td);
}
【问题讨论】:
-
我猜您的用户帐户不是管理员或高级用户,或者 UAC 最高?
-
即使用户有管理员权限,也会发生错误。堆栈跟踪
-
明确记录 here,第二个注释。因此,要么程序必须以 UAC 提升运行(登录时不会发生),要么管理员需要更改 c:\windows\tasks 的 ACL
-
不需要管理员权限为自己创建任务,用于交互式令牌。我也遇到了类似的问题...只是无法在非特权帐户中使用 TaskService 创建任务...
标签: c# scheduled-tasks taskscheduler