Ошибка при олицетворении пользователя в .NET в запланированной задаче - PullRequest
1 голос
/ 27 января 2009

У меня консольное приложение .NET, работающее на Windows Server 2003, как запланированное задание.

При этом используется класс Process для запуска другого небольшого консольного приложения, но он использует Process.StartInfo.Username для олицетворения пользователя, который запускает его как.

Если учетная запись, которая олицетворена в запланированной задаче в Администраторе, то она работает отлично, но если нет, то я получаю ошибку:

‘Приложение не удалось правильно инициализировать (0xc0000142)’

Я попытался дать пользователю «вход в систему как пакетное задание» и «вход в систему локально», но, похоже, это не имеет никакого эффекта. Консольное приложение запускается как олицетворенный пользователь, но затем перестает работать.

Глядя на Process Monitor, последнее событие до его сбоя:

Tool1.exe - Загрузить образ - C: \ WINDOWS \ system32 \ kernel32.dll - УСПЕХ

Я запустил Зависит от инструмента, и он сообщает, что это ошибка:

GetProcAddress (0x77E40000 [c: \ windows \ system32 \ KERNEL32.DLL], "FlsAlloc") вызывается из "c: \ windows \ system32 \ MSCOREE.DLL" по адресу 0x7900746D и возвращает 0x77E6B49C потоком 1. Выход "c: \ stfinstall \ stf \ tools \ tool1 \ TOOL1.EXE" (процесс 0xB3C) с кодом 1282 (0x502) из ​​потока 1.

Если кто-нибудь знает, что может быть причиной этой ошибки, или даже лучше, как я могу ее исправить, пожалуйста, дайте мне знать!

Предложения альтернативного подхода также приветствуются

Спасибо:)

1 Ответ

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

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

То, как я обошел его, заключалось в том, чтобы пользователь выполнял задачу, входя в систему постоянно, в окно, поэтому доступ к рабочему столу всегда доступен, и это работает нормально. Гадкий я знаю!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...