Ошибка при олицетворении пользователя в .NET в запланированной задаче

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

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

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

«Не удалось правильно инициализировать приложение (0xc0000142)»

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

Глядя на Process Monitor, последнее событие перед отказом:

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

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

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.

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

Также приветствуются предложения об альтернативном подходе.

Спасибо :)


person Fiona    schedule 27.01.2009    source источник
comment
Это похоже на проблему, аналогичную той, которая у вас возникла: stackoverflow.com/questions/362419/   -  person Luke Quinane    schedule 28.01.2009


Ответы (1)


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

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

person Fiona    schedule 13.02.2009