devious_code
30.11.2007, 15:38
Мне удалось запустить локальный сервер INTUIT в качестве сервиса Windows 2003 (должно работать и на других NT-системах).
Методика проста. Требуются программы instsrv.exe и srvany.exe из комплетка Resource Toolkit.
С помощью программы instsrv добавляем srvany в список сервисов (читайте справку по instsrv).
Далее мне пришлось написать маленькую программку на Delphi (ее легко перенести на C), которая запускает скрипт server_win32-3.pl с помощью идущего в комплекте Perl'а (путь к Perl должен быть в системной переменной PATH):
program IntuitSrv; //IntuitSrv.dpr
uses Windows;
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);
StartInfo.wShowWindow:=0;
StartInfo.dwFlags:=STARTF_USESHOWWINDOW;
CreateOK := CreateProcess(nil,
'perl server_win32-3.pl',
nil,
nil,
False,
NORMAL_PRIORITY_CLASS,
nil,
'C:\Program Files\INTUIT.ru\local_web_server\', StartInfo, ProcInfo);
if CreateOK then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end.
2. Идем в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\INTUIT\
Создаем новый ключ Parameters, в нем создаем две строковых переменных
"Application"="C:\\Program Files\\INTUIT.ru\\local_web_server\\src\\IntuitSrv .exe"
"AppDirectory"="C:\\Program Files\\INTUIT.ru\\local_web_server"
Все. Теперь просто запускаем сервис. Еще можно в файле server_win32-3.pl изменить значение константы port на 80 (если на этом порту уже не весит веб-сервер), для простоты.
Запустить сервис без программы IntuitSrv.exe у меня получалось, но он почему-то не отвечал на запросы. В данной конфигурации все работает, но методику можно доработать при желании.
Если что-то непонятно, могу прояснить некоторые моменты более детально.
Методика проста. Требуются программы instsrv.exe и srvany.exe из комплетка Resource Toolkit.
С помощью программы instsrv добавляем srvany в список сервисов (читайте справку по instsrv).
Далее мне пришлось написать маленькую программку на Delphi (ее легко перенести на C), которая запускает скрипт server_win32-3.pl с помощью идущего в комплекте Perl'а (путь к Perl должен быть в системной переменной PATH):
program IntuitSrv; //IntuitSrv.dpr
uses Windows;
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);
StartInfo.wShowWindow:=0;
StartInfo.dwFlags:=STARTF_USESHOWWINDOW;
CreateOK := CreateProcess(nil,
'perl server_win32-3.pl',
nil,
nil,
False,
NORMAL_PRIORITY_CLASS,
nil,
'C:\Program Files\INTUIT.ru\local_web_server\', StartInfo, ProcInfo);
if CreateOK then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end.
2. Идем в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\INTUIT\
Создаем новый ключ Parameters, в нем создаем две строковых переменных
"Application"="C:\\Program Files\\INTUIT.ru\\local_web_server\\src\\IntuitSrv .exe"
"AppDirectory"="C:\\Program Files\\INTUIT.ru\\local_web_server"
Все. Теперь просто запускаем сервис. Еще можно в файле server_win32-3.pl изменить значение константы port на 80 (если на этом порту уже не весит веб-сервер), для простоты.
Запустить сервис без программы IntuitSrv.exe у меня получалось, но он почему-то не отвечал на запросы. В данной конфигурации все работает, но методику можно доработать при желании.
Если что-то непонятно, могу прояснить некоторые моменты более детально.