Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Проблема с запуском приложения из 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-75935
BOA_KAA
2003-02-12 13:12
2003.02.24
PageControl


3-75758
mate
2003-02-05 15:21
2003.02.24
Hint for DBGrid


1-76014
Yakudza
2003-02-13 12:22
2003.02.24
XP интерфейс


3-75751
denis24
2003-02-05 13:11
2003.02.24
выставление активного индекса


3-75770
Шевченко Александр
2003-02-05 21:44
2003.02.24
Как программно сжать(упаковать) DBF-файл?