Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-76142
Феликс
2003-02-05 22:12
2003.02.24
Зацените проект! Combats.ru просто отдыхает.


3-75827
ДенМат
2003-02-06 12:48
2003.02.24
Сумирование поля типа TIME


3-75793
Ihtiandr
2003-02-06 11:28
2003.02.24
doSort


3-75833
Andy Eremin
2003-02-07 09:53
2003.02.24
sql


14-76095
Zhenka
2003-02-09 20:27
2003.02.24
Скажите где на MSDN.com найти книги на русском





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский