ошибка 0xC0000142 при специфических условиях на win7x64
От: Concrete-Mixer Россия http://max-first.livejournal.com
Дата: 10.08.10 11:55
Оценка:
Всех приветствую.

Имею такой сетап:
Есть Сервис, который запускает Программу, которая, в свою очередь, по команде запускает Вторую программу.

Случай 1:

Сервис запускается при старте системы, в этот же момент запускает и Программу.
Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142.
Event Log при это пуст.

Случай 2:

Если же запуск Программы происходит позже, тоже Сервисом (в тот момент, когда уже кто-то давно залогинен), то Вызов второй программы происходит без проблем.

Вызов делается через ShellExecute, однако с CreateProcess тот же результат.
В обоих случаях Программа запущена под NT AUTHORITY/NETWORK SERVICE.
ProcessExplorer в обоих случаях показывает равные права.

Первая программа — 32битное десктопное приложение.
Вторая программа — 64битное консольное приложение, однако выяснилось, что в первом случае запустить вообще никакую программу невозможно.
ProcessMonitor не показывает ошибок доступа к DLL в первом случае.

То же поведение на 64битной висте.
Что это?!?

Помогите, я уже сломал себе мозг.
Re: ошибка 0xC0000142 при специфических условиях на win7x64
От: x64 Россия  
Дата: 10.08.10 12:13
Оценка:
CM>Помогите, я уже сломал себе мозг.

Как именно и в какой конкретно момент запускается первая программа из службы? Лучше кодом.
Re: ошибка 0xC0000142 при специфических условиях на win7x64
От: ononim  
Дата: 10.08.10 12:54
Оценка:
CM>Сервис запускается при старте системы, в этот же момент запускает и Программу.
CM>Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142.
#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)
Как много веселых ребят, и все делают велосипед...
Re[2]: ошибка 0xC0000142 при специфических условиях на win7x
От: x64 Россия  
Дата: 10.08.10 17:42
Оценка:
CM>>Сервис запускается при старте системы, в этот же момент запускает и Программу.
CM>>Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142.
O>#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
O>одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)

Да, а в данном контексте это говорит о том, что служба стартанула первую программу слишком рано. Такое бывает, если не ждать соответствующего сигнала в службе, а звать CreateProcessAsUser() сразу, как только служба запустилась. Так делать, разумеется, неправильно. Я лично делаю обычно так
Автор: x64
Дата: 26.06.08
и проблем пока не было.
Re[2]: ошибка 0xC0000142 при специфических условиях на win7x
От: Concrete-Mixer Россия http://max-first.livejournal.com
Дата: 11.08.10 04:17
Оценка:
Здравствуйте, ononim, Вы писали:

O>#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)

O>одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)

Но первая-то программа запускается! А она загружает свои длл, которые те же, что использует вторая и даже больше.
Причем они стандартные, типа user32 или kernel.
Как это объяснить?
Re[3]: ошибка 0xC0000142 при специфических условиях на win7x
От: Concrete-Mixer Россия http://max-first.livejournal.com
Дата: 11.08.10 04:19
Оценка:
Да, еще погуглил — такое повеведение возможно при недостатке Desktop Heap.
Кто-нибудь сталкивался?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.