Как установить «запускать только в случае входа в систему» ​​и «запускать как» с помощью TaskScheduler в C #? - PullRequest
5 голосов
/ 17 ноября 2011

У меня есть код, который использует объект C # TaskManager для создания задачи.В Windows 7 он работает нормально, но в Windows XP (и, вероятно, в других Windows) он не работает вообще, потому что пользователь по умолчанию для задачи - это система, и, следовательно, нет сеанса для отображения графического интерфейса.Если я изменю созданную задачу вручную в виджете панели управления, чтобы настроить выполнение задания только при входе пользователя в систему и только для конкретного пользователя, тогда все будет работать отлично.Но, несмотря на часы поиска, я не вижу вариантов для установки этих параметров в объектах C #.Кто-нибудь знает решение с существующими объектами?Я не хотел бы переписывать все, чтобы вручную запустить EXE-файл планировщика и передать данные в командной строке.

Q

1 Ответ

4 голосов
/ 20 января 2012

Хорошо, я понял ответ!

Я не понял этого, но использовал стороннюю Task Scheduler Managed Wrapper (это было давноЯ написал эту часть своего кода), и это объясняет, почему трудно было найти помощь!Я наткнулся на эту страницу мгновение назад, и тут в их примерах было именно то, что мне было нужно!Подробное решение в контексте можно найти здесь , но ключевая часть:

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

Спасибо за попытку помочь!

...