Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизСервис и реестр Найти похожие ветки
← →
Avgust (2006-09-15 13:05) [0]проблема с сервисом, при запуске компьютера должен лесть в реестр и прописывать нужные ключи... при инсталяции и деинсталяции сервиса всё нормально.. в реестр изменения вносятся.. но вот при старте компьютера нет, пробовал делать изменения на создание сервиса и на старт сервиса.. изменения не происходят.
← →
Eraser © (2006-09-15 13:07) [1]> [0] Avgust (15.09.06 13:05)
в каком разделе реестра необходимо производить изменения при старте системы?
← →
Avgust (2006-09-15 13:08) [2]
> в каком разделе реестра необходимо производить изменения
> при старте системы?
HKEY_LOCAL_MACHINE
ключ: \SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\Domain Profile\GloballyOpenPorts\List
это брандмауэр
← →
Сергей М. © (2006-09-15 13:41) [3]у тебя ошибка в программе
← →
Avgust (2006-09-15 13:52) [4]
> у тебя ошибка в программе
хм... при установке сервисом или его удаления почемуто всё нормально срабатывает.. ну или просто клик по exe файлу.. неработает именно при установленном сервесе и загрузки компьютера.. :)
← →
Сергей М. © (2006-09-15 13:57) [5]
> Avgust (15.09.06 13:52) [4]
Давай-давай, продолжай рассуждать.
А воз и ныне там)
← →
Avgust (2006-09-15 14:28) [6]
> Давай-давай, продолжай рассуждать.
я не рассуждаю.. просто говорю что те задачи которые заложены выполняются.. но выполняются только при условии установки или удаления сервиса...
у меня поток запускается при создании сервиса.. так же пробовал его запускать при старте сервиса.. и по таймеру.. непашет блин (((((
← →
Сергей М. © (2006-09-15 14:35) [7]
> непашет блин (((((
>
Угу. Так , наверно, и говорит, мол, не пашу блин)
← →
Avgust (2006-09-15 14:48) [8]
> Угу. Так , наверно, и говорит, мол, не пашу блин)
если ты про ошибки.. их нет... сам бы уже разобрался.. но нет ошибок.. логи чистые.
← →
Сергей М. © (2006-09-15 14:50) [9]Значит у тебя ошибка в программе)
В 17-й строке)
← →
Avgust (2006-09-28 05:41) [10]
> Значит у тебя ошибка в программе)
ну вот смотри:
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey("\SOFTWARE\test",true);
reg.WriteInteger("test",1);
Reg.CloseKey;
всё работает как надо.. но после установки сервисом перестаёт..
← →
Ketmar © (2006-09-28 08:09) [11]>[10] Avgust 28-Sep-2006, 05:41
кросавчег. тебя что спрашивали? куда писать? в HKEY_LOCAL_MACHINE. а ты куда пишешь?
> reg.RootKey:=HKEY_CURRENT_USER;
с каких пор это одно и то же?
← →
Avgust (2006-09-28 10:45) [12]
> с каких пор это одно и то же?
не пишит в HKEY_CURRENT_USER и в HKEY_LOCAL_MACHINE разрешение system на запись есть везде.. но не пишит и всё..
← →
Avgust (2006-09-28 13:14) [13]хм.. а может это невозможно?..
← →
Ketmar © (2006-09-28 13:18) [14]>[13] Avgust 28-Sep-2006, 13:14
>хм.. а может это невозможно?..
однозначно. а остальные это делают при помощи некромантии.
← →
Elen © (2006-09-28 13:22) [15]
> Avgust
А какой у тебя тип сервиса? и где вызывается этот код?
← →
Ketmar © (2006-09-28 13:25) [16]>[15] Elen(c) 28-Sep-2006, 13:22
>А какой у тебя тип сервиса? и где вызывается этот код?
т-с-с-с. это секрет. автор не скажет.
← →
Elen © (2006-09-28 13:30) [17]
> Ketmar
По секрету всему свету. Ато Света сама нагрянет...
← →
Avgust (2006-09-28 13:59) [18]
> А какой у тебя тип сервиса? и где вызывается этот код?
stWin32
да везде пробовал и на создании и на запуске...
зы.. я понимаю что большенство сдесь кульных программёрав и никакда у них не вазникает проблем.. но плиз.. харе стебаца.. я просто админ и програмлю как любитель..
← →
Ketmar © (2006-09-28 14:06) [19]>[18] Avgust 28-Sep-2006, 13:59
>но плиз.. харе стебаца.. я просто админ
>и програмлю как любитель..
хватит плакать. тебе ж намекнули -- сократи код до минимума и покажи. тогда будем думать предметно.
← →
Avgust (2006-09-28 14:09) [20]
> сократи код до минимума и покажи. тогда будем думать предметно.
в 10-ом посте этот код.. куда его ещё меньше делать?...
← →
Ketmar © (2006-09-28 14:14) [21]>[20] Avgust 28-Sep-2006, 14:09
> в 10-ом посте этот код.. куда его ещё меньше
>делать?...
это не код. это обломок. ты по колесу от "запорожца" сможешь неисправность двигателя диагностировать?
← →
Avgust (2006-09-28 14:20) [22]
> ты по колесу от "запорожца" сможешь неисправность двигателя
> диагностировать
ты прикалываешься?...
это весь код.. это полностью рабочий код.. больше нету ничего..
вставлял его на старт сервиса.. на его создание.. карочи на все события ставил.. но как только я устанавливаю этот сервис сервисом.. то всё.. запись в реестр непроисходит.
← →
Ketmar © (2006-09-28 14:42) [23]ну вот тебе пример. только что проверил -- работат "на ура".
{$APPTYPE GUI}
{$I-}
program stezt;
uses
Windows, WinSvc, SysUtils, Registry;
var
serviceName: PChar = "";
status: TServiceStatus;
statusHandle: SERVICE_STATUS_HANDLE;
serviceTable: packed array [0..1] of TServiceTableEntry;
stopped: Boolean;
paused: Boolean;
procedure ServiceMain ();
var
r: TRegistry;
begin
repeat
if not paused then
begin
r := nil;
try
r := TRegistry.Create();
r.RootKey := HKEY_LOCAL_MACHINE;
if r.OpenKey("software\av0", true) then
begin
r.WriteInteger("intvalue", Random(65536));
end;
except
end;
FreeAndNil(r);
Sleep(1000);
end;
until stopped;
end;
procedure ServiceCtrlHandler(Control: dword); stdcall;
begin
case Control of
SERVICE_CONTROL_STOP:
begin
stopped := True;
status.dwCurrentState := SERVICE_STOP_PENDING;
SetServiceStatus(statusHandle, status);
end;
SERVICE_CONTROL_PAUSE:
begin
paused := True;
status.dwcurrentstate := SERVICE_PAUSED;
SetServiceStatus(statusHandle, status);
end;
SERVICE_CONTROL_CONTINUE:
begin
paused := False;
status.dwCurrentState := SERVICE_RUNNING;
SetServiceStatus(statusHandle, status);
end;
SERVICE_CONTROL_INTERROGATE: SetServiceStatus(statusHandle, status);
SERVICE_CONTROL_SHUTDOWN: stopped := True;
end;
end;
procedure ServiceCtrlDispatcher(dwArgc: dword; var lpszArgv: PChar); stdcall;
begin
statusHandle := RegisterServiceCtrlHandler(serviceName, @ServiceCtrlHandler);
if statusHandle <> 0 then
begin
ZeroMemory(@status, SizeOf(status));
status.dwServiceType := SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS;
status.dwCurrentState:= SERVICE_START_PENDING;
status.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE;
status.dwWaitHint := 1000;
SetServiceStatus(statusHandle, status);
stopped := False;
paused := False;
status.dwCurrentState := SERVICE_RUNNING;
SetServiceStatus(statusHandle, status);
ServiceMain;
status.dwCurrentState := SERVICE_STOPPED;
SetServiceStatus(statusHandle, status);
end;
end;
procedure UninstallService(serviceName: PChar);
var
SCManager: SC_HANDLE;
Service: SC_HANDLE;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager = 0 then Exit;
try
Service := OpenService(SCManager, serviceName, SERVICE_ALL_ACCESS);
ControlService(Service, SERVICE_CONTROL_STOP, status);
DeleteService(Service);
CloseServiceHandle(Service);
finally
CloseServiceHandle(SCManager);
end;
end;
procedure InstallService(serviceName, DisplayName: PChar; fileName: string);
var
SCManager: SC_HANDLE;
Service: SC_HANDLE;
Args: PChar;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager = 0 then Exit;
try
Service := CreateService(SCManager, serviceName, DisplayName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_IGNORE,
PChar(fileName), nil, nil, nil,
nil, nil);
if Service = 0 then
//MessageBox(0, "error installing service", "xkit error", 0)
else
begin
Args := nil;
StartService(Service, 0, Args);
end;
CloseServiceHandle(Service);
finally
CloseServiceHandle(SCManager);
end;
end;
begin
serviceName := "tezzzt";
if ParamStr(1) = "/i" then
begin
//MessageBox(0, "installing service", "xkit", 0);
InstallService(serviceName, "tezzzt1", ParamStr(0));
end
else if ParamStr(1) = "/u" then
begin
//MessageBox(0, "uninstalling service", "xkit", 0);
UninstallService(serviceName);
end
else
begin
serviceTable[0].lpServiceName := serviceName;
serviceTable[0].lpServiceProc := @ServiceCtrlDispatcher;
serviceTable[1].lpServiceName := nil;
serviceTable[1].lpServiceProc := nil;
StartServiceCtrlDispatcher(serviceTable[0]);
end;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.044 c