Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.097 c
2-1159195466
vyper
2006-09-25 18:44
2006.10.15
Как убить процесс


15-1158674598
Gerlon
2006-09-19 18:03
2006.10.15
Shareware


15-1158931825
stone
2006-09-22 17:30
2006.10.15
Премия за глупость


15-1158834569
Дмитрий Белькевич
2006-09-21 14:29
2006.10.15
Как заставить win обновить CD каталог после записи?


2-1159549164
Merry
2006-09-29 20:59
2006.10.15
Private и public





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский