Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизСервис Найти похожие ветки
← →
Levin_610 © (2006-07-14 12:50) [0]как зарегестрировать программу, как сервис?
← →
sniknik © (2006-07-14 12:53) [1]выполнить с параметром /install (если конечно она написана именно как сервис)
← →
isasa © (2006-07-14 13:03) [2]http://www.ishodniki.ru/art/artshow.php?id=90&cat=1&show=delphi
вот эта штука повторяется в нете n-раз.
Если сделать как там, то, по моему, параметр /i :)
← →
Levin_610 © (2006-07-14 13:22) [3]спасибо
← →
prosto_Maria © (2006-07-14 16:09) [4]там есть функция ServiceInitialization, что она делает и как её описать?
← →
novill © (2006-07-14 16:22) [5]
> prosto_Maria © (14.07.06 16:09) [4]
> там есть функция ServiceInitialization
"Там" - Это где? :)
← →
prosto_Maria © (2006-07-14 16:40) [6]http://www.ishodniki.ru/art/artshow.php?id=90&cat=1&show=delphi
← →
Пусик © (2006-07-14 22:23) [7]
> Levin_610 © (14.07.06 12:50)
srvany.exe из пакета Resouce Kit. Позволит запустить программу как сервис.
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en
либо ищи отдельно 3 файла:
instsrv.exe
srvany.exe
srvany.wri (инструкция).
← →
Leonid Troyanovsky © (2006-07-14 22:41) [8]
> prosto_Maria © (14.07.06 16:40) [6]
Видишь ли, Маша (ничего, если я запросто?)
Для того, чтобы зарегистрировать прилож aka service,
она д.б. написана aka service. О чем уже ранее было и сказано.
Подробности можно найти на
http://rsdn.ru/?article/baseserv/svcadmin-1.xml & etc
--
Regards, LVT.
← →
isasa © (2006-07-14 23:13) [9]prosto_Maria © (14.07.06 16:09) [4]
там есть функция ServiceInitialization, что она делает и как её описать?
Очередной переписчик этой "библии" забыл ее закоментировать. Эта функция может быть написана(а может и нет) пользователем для инициализации каких-нибудь данных сервиса. Показывает место, где это уместно делать. В коментарий ее.
← →
isasa © (2006-07-14 23:19) [10]OFFTOP
Чистое любопытство. Зачем два ника?
Levin_610 ©
prosto_Maria ©
Да еще такие разные?
← →
Leonid Troyanovsky © (2006-07-14 23:21) [11]
> isasa © (14.07.06 23:19) [10]
> Да еще такие разные?
Я могу предложить версии, если ты поделишься
основаниями для идентефикации.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2006-07-14 23:25) [12]
> Leonid Troyanovsky © (14.07.06 23:21) [11]
> Я могу предложить версии, если ты поделишься
> основаниями для идентефикации.
Так основания шиты белыми нитками,
то, делится версиями я не буду, sorry.
--
Regards, LVT.
← →
Levin_610 © (2006-07-17 09:29) [13]у меня почему-то не заходило, под моим ником, а просто_Мария полезный ник), я написал программу, как сервис, но как прописать, чтобы она регистрировалась?
← →
Ketmar © (2006-07-17 10:25) [14]попросить SCM зарегистрировать. %-)
← →
Levin_610 © (2006-07-17 10:27) [15]до этого я уже дошёл, я вроде прошу, но видимо как-то не так)
← →
Fay © (2006-07-17 10:38) [16]2 Levin_610 © (17.07.06 10:27) [15]
Значит не дошёл
← →
Levin_610 © (2006-07-17 10:47) [17]последнее высказывание было необходимо) - я делаю так:
hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if (hSCMgr <> 0) then
begin
hNewService := CreateService(hSCMgr, PChar(ServiceName), PChar(ServiceName),
STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
PChar(ExecutablePath), nil, nil, nil, nil, nil);
- это все, что нужно, чтобы SCM зарегистрировал службу? или нужно ещё что-то? Или может в этом коде есть ошибка?
← →
isasa © (2006-07-17 10:54) [18]Вот фрагмент болванки _tmain сервиса. На D, к сожалению нет, т.к. не юзаю.
Но идея, думаю, будет понятна. API функции -- те-же. Лежать должен в *.dpr, если не ошибаюсь.
TCHAR srvName[] = _T("DiSpy");
TCHAR srvDispName[] = _T("DiSpy Internet Broadband Router Spyer");
threadDataStruct thData;
int _tmain(int argc, _TCHAR* argv[])
{
...
//Service Installing
if(wcscmp(argv[1],L"/i")==0)
{
wprintf(L"Service installing ...\n");
SC_HANDLE schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); // Open SC Manager
if (NULL == schSCManager)
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
wprintf(L"OpenSCManager failed. (0x%08X)%s\n", dw, lpMsgBuf);
LocalFree(lpMsgBuf);
return 0;
}
SC_HANDLE schService = CreateService(schSCManager, srvName, srvDispName, SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, thData.szPath,
NULL, NULL, NULL, NULL, NULL);
if (schService == NULL)
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
wprintf(L"CreateService failed. (0x%08X)%s\n", dw, lpMsgBuf);
CloseServiceHandle(schSCManager);
LocalFree(lpMsgBuf);
return 0;
}
CloseServiceHandle(schService);
wprintf(L"Service installing succeeded:\n");
wprintf(L"Service display name: \"%s\"\n", srvDispName);
wprintf(L"Service file path: \"%s\"\n", thData.szPath);
return 0;
}
//Service Uninstalling
if(wcscmp(argv[1],L"/u")==0)
{
wprintf(L"Service uninstalling ...\n");
SC_HANDLE schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS); // Open SC Manager
if (NULL == schSCManager)
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
wprintf(L"OpenSCManager failed. (0x%08X)%s\n", dw, lpMsgBuf);
LocalFree(lpMsgBuf);
return 0;
}
SC_HANDLE schService = OpenService( schSCManager, srvName, DELETE);
if (schService == NULL)
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
wprintf(L"OpenService failed. (0x%08X)%s\n", dw, lpMsgBuf);
CloseServiceHandle(schSCManager);
LocalFree(lpMsgBuf);
return 0;
}
if (!DeleteService(schService))
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
wprintf(L"DeleteService failed. (0x%08X)%s\n", dw, lpMsgBuf);
CloseServiceHandle(schSCManager);
CloseServiceHandle(schService);
LocalFree(lpMsgBuf);
return 0;
}
wprintf(L"DeleteService succeeded.\n");
wprintf(L"Service was deleted without error.\n");
CloseServiceHandle(schSCManager);
CloseServiceHandle(schService);
return 0;
}
...
← →
Fay © (2006-07-17 11:08) [19]2 Levin_610 © (17.07.06 10:47) 17]
>STANDARD_RIGHTS_REQUIRED
SC_MANAGER_CREATE_SERVICE не лучше? И ваще, где анализ результата выполнения CreateService?
← →
Levin_610 © (2006-07-17 11:23) [20]вроде та часть программы у меня написана так же, значит проблема не в этом
← →
Levin_610 © (2006-07-17 11:27) [21]всё есть - CreateServise
← →
Levin_610 © (2006-07-17 11:34) [22]а что нужнопрописать в основной ф-ции function MainServiceThread(p: Pointer): DWORD; stdcall;
var hWinSta, hDesktop, hOldWinSta, hOldDesktop: THandle;
begin
sleep(10);
end;
ещё что-то?
← →
Fay © (2006-07-17 12:00) [23]2 Levin_610 © (17.07.06 11:34) [22]
> что нужнопрописать в основной ф-ции
Предполагается, что ты это уже знаешь.
Не парь мозги, возьми готовый класс службы.
← →
Levin_610 © (2006-07-17 12:05) [24]ссылку на какой-нибудь нормальный готовый класс можешь дать?
← →
Levin_610 © (2006-07-17 12:23) [25]пожалуйста
← →
isasa © (2006-07-17 12:31) [26]:)
Если по-простому, то
while exitFlag=0 do begin
<делаем что-то>
Sleep(<скоко надо, если надо>);
end;
Или, если хочешь с ним общаться через WM_<message>, то GetMessage в цикле.
← →
isasa © (2006-07-17 12:33) [27]Судя по вопросам, все-таки, сходи по ссылке
Leonid Troyanovsky © (14.07.06 22:41) [8]
на rsdn.
Наступит просветление. :)
← →
Levin_610 © (2006-07-17 12:52) [28]я прочиталЮ и вроде бы всё нормально в моей программе - надо было идти в футболисты)
← →
Fay © (2006-07-17 14:40) [29]2 Levin_610 © (17.07.06 12:52) [28]
Что возвращает CreateService?
← →
Пусик © (2006-07-17 14:48) [30]
> Levin_610 © (17.07.06 12:05) [24]
> ссылку на какой-нибудь нормальный готовый класс можешь дать?
>
Вот рабочий код.unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls;
type
TThreadTimer=class(TThread)
protected
FS: TFileStream;
procedure Execute; override;
end;
TTwoService = class(TService)
procedure ServiceExecute(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
TwoService: TTwoService;
ThrTimer: TThreadTimer;
implementation
{$R *.DFM}
{TTwoService}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
TwoService.Controller(CtrlCode);
end;
function TTwoService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TTwoService.ServiceExecute(Sender: TService);
begin
while not terminated do
begin
ServiceThread.ProcessRequests(True);
end;
end;
procedure TTwoService.ServiceStart(Sender: TService; var Started: Boolean);
begin
ThrTimer := TThreadTimer.Create(True);
ThrTimer.FreeOnTerminate := True;
try
if not FileExists("c:\log.tmp") then
begin
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate or fmShareDenyWrite);
ThrTimer.FS.Free;
end;
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmOpenReadWrite or fmShareDenyWrite);
Started := True;
except
ThrTimer.Terminate;
Started := False;
end;
ThrTimer.Resume;
end;
procedure TTwoService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
ThrTimer.Terminate;
ThrTimer.Resume;
Stopped := True;
end;
procedure TTwoService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
ThrTimer.Resume;
Continued := True;
end;
procedure TTwoService.ServicePause(Sender: TService; var Paused: Boolean);
begin
ThrTimer.Suspend;
Paused := True;
end;
{ TThreadTimer }
procedure TThreadTimer.Execute;
var
s: String;
begin
while not Terminated do
begin
try
s := FormatDateTime("hh:nn:ss",Now)+#13#10;
FS.Write(s[1],Length(s));
Sleep(1000);
except
end;
end;
FS.Free;
end;
end.
← →
Fay © (2006-07-17 14:54) [31]2 Пусик © (17.07.06 14:48) [30]
if not FileExists("c:\log.tmp") then
begin
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate or fmShareDenyWrite);
ThrTimer.FS.Free;
end;
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmOpenReadWrite or fmShareDenyWrite);
что это за порнография?
← →
Пусик © (2006-07-17 15:12) [32]
> Fay © (17.07.06 14:54) [31]
> 2 Пусик © (17.07.06 14:48) [30]if not FileExists("c:\log.
> tmp") then begin ThrTimer.FS := TFileStream.Create("c:
> \log.tmp",fmCreate or fmShareDenyWrite); ThrTimer.FS.
> Free; end; ThrTimer.FS := TFileStream.Create("c:\log.
> tmp",fmOpenReadWrite or fmShareDenyWrite);что это за порнография?
>
Внимательней код изучай.
← →
DrPass © (2006-07-17 15:14) [33]А почему не
if not FileExists("c:\log.tmp") then
?
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate or fmShareDenyWrite)
else
ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmOpenReadWrite or fmShareDenyWrite);
← →
Fay © (2006-07-17 15:18) [34]2 Пусик © (17.07.06 15:12) [32]
> Внимательней код изучай.
Я изучил. Порнография в чистом виде.
← →
Пусик © (2006-07-17 15:29) [35]
> Fay © (17.07.06 15:18) [34]
> 2 Пусик © (17.07.06 15:12) [32]> Внимательней код изучай.
> Я изучил. Порнография в чистом виде
Вот иди и займись ей(порнографией).
> DrPass © (17.07.06 15:14) [33]
Дело в том, что при TFileStream.Create("c:\log.tmp",fmCreate or fmShareDenyWrite) нужный эффект(доступ на чтение из других программ) не будет достигнут.
← →
Пусик © (2006-07-17 15:31) [36]> DrPass © (17.07.06 15:14) [33]
Да и не в том вопрос. Приведен рабочий пример. Как и просил человек.
А все вокруг - излишне.
← →
Игорь Шевченко © (2006-07-17 17:10) [37]Порнография на самом деле находится в SysUtils, не позволяющая передать в функцию FileCreate параметр режима разделения доступа.
← →
Fay © (2006-07-17 17:13) [38]2 Пусик © (17.07.06 15:29) [35]
> Дело в том, что при TFileStream.Create
А CreateFile не судьба?
← →
Пусик © (2006-07-17 17:14) [39]
> Fay © (17.07.06 17:13) [38]
> 2 Пусик © (17.07.06 15:29) [35]> Дело в том, что при TFileStream.
> CreateА CreateFile не судьба?
А прежде подумать, а потом говорить, тоже не судьба?
← →
Игорь Шевченко © (2006-07-17 17:20) [40]
> ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate
> or fmShareDenyWrite);
or fmShareDenyWrite - лишнее. fmCreate равен $FFFF
← →
Пусик © (2006-07-17 17:27) [41]
> Игорь Шевченко © (17.07.06 17:20) [40]
> > ThrTimer.FS := TFileStream.Create("c:\log.tmp",fmCreate
> > or fmShareDenyWrite);or fmShareDenyWrite - лишнее. fmCreate
> равен $FFFF
Совершенно верно.
Но стоит ли этот совершенно никчемный пример, всего лишь демонстрирующий, как правильно организовать работу сервиса, используя готовый класс Delphi, разбиратть по косточкам?
← →
Fay © (2006-07-17 17:30) [42]2 Пусик © (17.07.06 17:14) [39]
> А прежде подумать, а потом говорить, тоже не судьба?
О чём это, таком умном, нужно было подумать?
← →
Пусик © (2006-07-17 17:43) [43]
> Fay © (17.07.06 17:30) [42]
> 2 Пусик © (17.07.06 17:14) [39]> А прежде подумать, а
> потом говорить, тоже не судьба?О чём это, таком умном, нужно
> было подумать?
О вечном, непреходящем. А также см. [41].
Прежде, чем цепляться к пуговицам, подумай о цели и назначении предмета одежды.
Не надо цепляться и говорить, что на майке нет пуговиц (ничего себе - майка без пуговиц!), так как она не предназначена для того, чтобы к ней пуговицы нашивали. Разве что для людей с немного измененной психикой.
← →
Игорь Шевченко © (2006-07-17 17:48) [44]Пусик © (17.07.06 17:43) [43]
flame > /dev/null
← →
Levin_610 © (2006-07-18 09:36) [45]спасибо за помощь, я уже написал, всё получилось, спасибо
← →
isasa © (2006-07-18 10:35) [46]:)
ну вот, а ты боялся ...
← →
isasa © (2006-07-18 10:38) [47]Да.
Статью с rsdn почитай. Там про время откликов потоков сервиса -- очень актуальнай момент(не только для корректного завершения)
← →
Levin_610 © (2006-07-18 12:24) [48]правильно боялся, у меня почему-то, регистроваться-то регистрируется, и удаляется, но не запускается, если пытаюсь запустить, то пишет следующее: ошибка2: не удаётся найти указанный файл
← →
isasa © (2006-07-18 13:06) [49]А проверить, где зарегистрирован модуль службы и есть ли он там. :)
SC_HANDLE schService = CreateService(
schSCManager, // SCManager database
srvName, // name of service
srvDispName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // path to service"s binary <-- откуда взял?
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
← →
Levin_610 © (2006-07-18 14:06) [50]szPath, // path to service"s binary <-- откуда взял? - где-то прочситал, что так можно сделать) , а это неправильно? кстати там я ошибся в адресе, правда тебперь при запуске не отвечает моя программа на запрос, но это уже другая история)
← →
Levin_610 © (2006-07-18 14:21) [51]я вообщем локализовал ошибку, она в ф-ции СервисСтарт, не у кого нет рабочей версии этой функции?) Странная вещь, когда я расскомментирую описания процедуры СервисСтарт, у меня не может сервис зарегестрироваться, как такое может быть?
← →
Levin_610 © (2006-07-18 15:07) [52]теперь служба запускается, но дает ошибку сразу же, где можно искать ошибку: при приёме данных от SCM, что-то с потоком может быть не так? - конечно понимаю - глупо спрашивать, где в моём коде ошибка) , но мало ли у кого есть идеи. Но и всё же, если у кого есть servicestart и servicestop нормальные...пожалуйста)
← →
Levin_610 © (2006-07-19 09:21) [53]вопрос всё ещё в силе)
← →
Levin_610 © (2006-07-19 12:30) [54]у меня заходит сюда: if not StartServiceCtrlDispatcher(DispatchTable[0]) then
LogError("StartServiceCtrlDispatcher Error");
т.е. неправидьно выполняется StartServiceCtrlDispatcher, с чем это может быть связано?
помогите пожалуйста.
← →
isasa © (2006-07-19 12:49) [55]Levin_610 © (19.07.06 12:30) [54]
Перепиши приблизительно так, и почитай, что пишет
if not StartServiceCtrlDispatcher(DispatchTable[0]) then begin
ErrCode:=GetLastError();
LogError(
"StartServiceCtrlDispatcher Error "+
format("%d(%x) %s", [ErrCode, ErrCode, SysErrorMessage(ErrCode)])
);
end;
← →
Levin_610 © (2006-07-19 13:55) [56]хорошо, спасибо, ща попробую.
← →
Levin_610 © (2006-07-19 14:20) [57]после того, как я ввёл этот код - он вывел следующее на экран:
StartServiceCtrlDispatcher Error 1063<427> - а дальше набор символов на непонятном языке
← →
isasa © (2006-07-19 15:10) [58]:)
Ну а так
if not StartServiceCtrlDispatcher(DispatchTable[0]) then begin
ErrCode:=GetLastError();
MessageBox(0,
PChar("StartServiceCtrlDispatcher Error "+format("%d(%x) %s", [ErrCode, ErrCode, SysErrorMessage(ErrCode)])),
"Start Service Error ",
MB_OK or MB_ICONERROR or MB_SERVICE_NOTIFICATION);
end;
Кодировка?
Винда русская, небось от 2000 или ХР, т.е. консоль - юникод, в файл пишем как со всеми вытекающими.
Кстати, дома на русской тоже надо потренироваться.
← →
isasa © (2006-07-19 15:16) [59]:)
Должно так(на англ.)
StartServiceCtrlDispatcher Error 1063(427) The service process could not connect to the service controller
Криво расставил точки входа.
DispatchTable[0].lpServiceName:=<ServiceName>;
DispatchTable[0].lpServiceProc:=@ServiceProc;
DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;
← →
Levin_610 © (2006-07-19 15:22) [60]пишет, что одна копия службы уже запущена, но я удалил тогда службу эту, он всё равно пишет тоже самое
← →
Levin_610 © (2006-07-19 15:24) [61]DispatchTable[0].lpServiceName:=ServiceName;
DispatchTable[0].lpServiceProc:=@ServiceProc;
DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;
У меня вот так вот, но ServiceName = "ServiceName"
← →
isasa © (2006-07-19 15:37) [62]Ctrl+Shift+Esc - закладка Processes, ищем, удаляем.
Зарегистрировать, запустить, остановить, приостановить, восстановить, удалить (Register, Start, Stop, Pause, Resume, Unregister) - разные действия.
Надо читать первоисточники.
Так не пойдет - сумбур. :)
← →
Levin_610 © (2006-07-19 16:13) [63]у меня нет его в процессах
← →
Levin_610 © (2006-07-19 16:21) [64]я нашёл в чем там глюк был, теперь он другое пишет:
"Процесс службы не может установить связь с контроллером службы"
← →
Levin_610 © (2006-07-20 09:01) [65]Как написать СервисКонтроллер, чтобы всё действовало?
← →
Fay © (2006-07-20 09:45) [66]http://www.booka.ru/booka_topic_5114?id=17892
← →
Levin_610 © (2006-07-20 09:52) [67]спасибо конечно, но я бедный стцдент до зарплаты, а зарплату я не получу, если не сделаю программу - замкнутый круг получается), по
тому я спрошу, если кто захочет ответит:
почему-то если запускать прогу через прописания /install, то потом связь устанавливается видимо, во всяком случае служба запускается, но мне нужно, чтобы служба автоматически устанавливалась, у меня это прописано, но тогда появляется вышеупомянутая ошибка, это значит, что что-то не совсем правильно в CreatNTService?
← →
Levin_610 © (2006-07-20 15:49) [68]вопросы всё ещё в силе, про СервиКонтрол и последний, буду благодарен за помощь
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.64 MB
Время: 0.013 c