Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Описание сервиса [D7, Win2k, WinXP]


Misha Uskov ©   (2006-07-20 11:16:00) 

Безуспешно пытаюсь задать описание сервиса :-( помогите, пжалста.
{ Externals from advapi32.dll }
function ChangeServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
                              var lpInfo): BOOL; stdcall;

function ChangeServiceConfig2A;   external advapi32 name 'ChangeServiceConfig2A';
const
 SERVICE_CONFIG_DESCRIPTION = 1;
type
SERVICE_DESCRIPTION = record
  lpDescription : PAnsiChar;
end;

procedure TSPService.ServiceAfterInstall(Sender: TService);
var
 sdBuf : SERVICE_DESCRIPTION;
 h_manager, h_svc: SC_Handle;
begin
 h_manager := OpenSCManager('' ,nil, SC_MANAGER_CONNECT);
 if h_manager > 0 then
 begin
    MessageDlg('!', mtWarning, [mbOK], 0);
   h_svc := OpenService(h_manager, PChar(Name), SERVICE_QUERY_STATUS);
   if h_svc > 0 then
   begin
     sdBuf.lpDescription := PAnsiChar(CDescription);
     ChangeServiceConfig2A(h_svc, SERVICE_CONFIG_DESCRIPTION, sdBuf);
     CloseServiceHandle(h_svc);
     MessageDlg('!!', mtWarning, [mbOK], 0);
   end;
   CloseServiceHandle(h_manager);
 end;
end;


Fay   (2006-07-20 13:16:00) [1]

2 Misha Uskov ©   (20.07.06 11:45) [5]
Ну и славно 8)


Misha Uskov   (2006-07-20 11:45:00) [2]

упс, опять поленился :-( с getLastError. Все ясно, надо
h_svc := OpenService(h_manager, PChar(Name), SERVICE_CHANGE_CONFIG);


Misha Uskov   (2006-07-20 11:42:00) [3]

(Fay)
     if not ChangeServiceConfig2A(h_svc, SERVICE_CONFIG_DESCRIPTION, sdBuf)
       then MessageDlg(SysErrorMessage(getLastError), mtError, [mbOK], 0);
говорит "Отказано в доступе"


Fay   (2006-07-20 11:38:00) [4]

2 Misha Uskov ©   (20.07.06 11:32) [2]
> ChangeServiceConfig2A возвращает ложь :-(
А GetLastError возвращает $FUCK, так что-ли?


Misha Uskov   (2006-07-20 11:32:00) [5]

ChangeServiceConfig2A возвращает ложь :-(


Misha Uskov   (2006-07-20 11:18:00) [6]

на сях задекларировано так:
BOOL ChangeServiceConfig2(
 SC_HANDLE hService,
 DWORD dwInfoLevel,
 LPVOID lpInfo
);

typedef struct _SERVICE_DESCRIPTION {  LPTSTR lpDescription;
} SERVICE_DESCRIPTION


Наверх

Титульная страница Поиск, карта сайта Написать письмо