![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Описание сервиса [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