Имею такой сетап:
Есть Сервис, который запускает Программу, которая, в свою очередь, по команде запускает Вторую программу.
Случай 1:
Сервис запускается при старте системы, в этот же момент запускает и Программу.
Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142.
Event Log при это пуст.
Случай 2:
Если же запуск Программы происходит позже, тоже Сервисом (в тот момент, когда уже кто-то давно залогинен), то Вызов второй программы происходит без проблем.
Вызов делается через ShellExecute, однако с CreateProcess тот же результат.
В обоих случаях Программа запущена под NT AUTHORITY/NETWORK SERVICE.
ProcessExplorer в обоих случаях показывает равные права.
Первая программа — 32битное десктопное приложение.
Вторая программа — 64битное консольное приложение, однако выяснилось, что в первом случае запустить вообще никакую программу невозможно.
ProcessMonitor не показывает ошибок доступа к DLL в первом случае.
То же поведение на 64битной висте.
Что это?!?
Помогите, я уже сломал себе мозг.
Re: ошибка 0xC0000142 при специфических условиях на win7x64
CM>Сервис запускается при старте системы, в этот же момент запускает и Программу. CM>Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142.
#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)
Как много веселых ребят, и все делают велосипед...
Re[2]: ошибка 0xC0000142 при специфических условиях на win7x
CM>>Сервис запускается при старте системы, в этот же момент запускает и Программу. CM>>Однако если потом Программа попытается запустить Вторую программу, то получаем ошибку инициализации приложения 0xС0000142. O>#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L) O>одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)
Да, а в данном контексте это говорит о том, что служба стартанула первую программу слишком рано. Такое бывает, если не ждать соответствующего сигнала в службе, а звать CreateProcessAsUser() сразу, как только служба запустилась. Так делать, разумеется, неправильно. Я лично делаю обычно так
Здравствуйте, ononim, Вы писали:
O>#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L) O>одна из длл на которую линкуется процесс не смогла проинициализироваться (DllMain вернул FALSE или свалился нафиг)
Но первая-то программа запускается! А она загружает свои длл, которые те же, что использует вторая и даже больше.
Причем они стандартные, типа user32 или kernel.
Как это объяснить?
Re[3]: ошибка 0xC0000142 при специфических условиях на win7x