Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
ВнизПроблема с запуском приложения из win-сервиса. Найти похожие ветки
← →
Slonic75 (2003-02-14 10:55) [0]Проблема с запуском приложения из win-сервиса. Никак не могу разобраться в чем ошибка. Есть консольное приложение, которое нормально работает, когда его просто запускаешь руками. Написал приложение сервис по шаблону Service Application, которое делает следующее – запускает исходное консольное приложение и ожидает его завершения (консоль при этом видна, т.к. через нее вводятся команды управления). И все! Т.е. получается, что исходное приложение просто запускается под системным аккаунтом. Но исходное приложение, нормально работавшее при запуске руками, будучи запущенным через сервис, падает при обращении к методу AssignFile. Не могу понять почему… Помогите если кто понимает в чем дело…
← →
Slonic75 (2003-02-14 16:25) [1]Текст процедуры приложения-сервиса:
procedure TWindowsService.ServiceExecute(Sender: TService);
var
lpStartupInfo: TStartupInfo;
begin
FillChar(lpStartupInfo, SizeOf(lpStartupInfo), #0);
lpStartupInfo.cb:= SizeOf(lpStartupInfo);
lpStartupInfo.dwFlags:= STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow:= SW_SHOWNORMAL;
if Not CreateProcess(nil, PChar(ApplicationFile), nil, nil, False,
CREATE_NEW_CONSOLE Or NORMAL_PRIORITY_CLASS, nil, nil, lpStartupInfo,
lpProcessInformation) then
ShowMessage(SysErrorMessage(GetLastError))
else
begin
ServiceControl:= TEvent.Create(nil, False, True, "ServiceControl");
WaitForSingleObject(lpProcessInformation.hProcess, INFINITE);
CloseHandle(lpProcessInformation.hProcess);
ServiceControl.Free;
ServiceControl:= nil
end
end;
← →
Digitman (2003-02-14 16:35) [2]
> падает при обращении к методу AssignFile
откуда ты это знаешь ? Ты трассировал его ?
← →
Slonic75 (2003-02-14 17:24) [3]Пршу прощения, падает не на AssignFile, а на следущий за ним Reset ...
Трассирую путем вывода информации на консоль...
← →
Digitman (2003-02-14 17:37) [4]а это как будет работать ? проверь
{$I+}
try
Reset(....);
except
on e:Exception do
begin
вывод_на_консоль_строки(e.Classname + " : " + e.Message);//диагноз - на консоль !
Halt(1); // авар.завершение процесса
end;
end;
{$I-}
← →
Slonic75 (2003-02-14 17:41) [5]Нашел причину.
После старта консольного приложения для него текущим каталогом оказался c:\windows\system32. Естественно, что никакого ini файла там нет, т.к. он лежит там же где и исполняемый файл .exe
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c