C # Запуск программы winform от имени не входящего в систему пользователя - PullRequest
0 голосов
/ 27 февраля 2009

Мне нужно, чтобы моя программа winform запускалась от имени другого пользователя (она будет работать в планировщике задач), а не вошедшего в систему пользователя. Я подозреваю, что проблема заключается в том, что мое приложение основано на графическом интерфейсе, а не на командной строке (это имеет значение), поэтому графический интерфейс должен загрузить, а затем закрыть его. Это возможно под XP или Vista?

Спасибо

Ответы [ 5 ]

5 голосов
/ 27 февраля 2009

Запланированные задачи могут быть запущены от имени указанного пользователя, что может отличаться от пользователя, вошедшего в систему.

Вы можете указать этого пользователя при создании задачи или редактировании свойств существующей задачи.

1 голос
/ 27 февраля 2009

Если ваше приложение должно запускаться как запланированное задание, тогда оно не может иметь пользовательский интерфейс. Как минимум, он действительно должен быть запущен из командной строки.

Наилучшим подходом было бы отделение пользовательского интерфейса от фактической обработки, чтобы при необходимости вы все равно могли запускать его в интерактивном режиме. Это также значительно упростит тестирование вашего приложения.

РЕДАКТИРОВАТЬ: отредактировано для ввода и смысла

0 голосов
/ 27 февраля 2009

Вы ищете метод Process.Start. Одна из перегрузок принимает пару имя пользователя / пароль. Процесс будет создан с использованием этих учетных данных пользователя.

var app = Process.Start(@"c:\path\to\some\app.exe", userName, password, domainOrEmptyString);
0 голосов
/ 27 февраля 2009

Другой способ запустить программу - программно изменить пользователя на основе файла конфигурации или даже соединения с БД. Один пример проекта находится на Code Project:

http://www.codeproject.com/KB/cs/runas.aspx

Надеюсь, это поможет.

0 голосов
/ 27 февраля 2009

Я бы проголосовал за первый вариант или за дополнительную возможность: используйте Олицетворение в своем коде. Хотя это может быть излишним / не соответствовать вашим потребностям здесь.

...