У меня есть следующий код, который отлично работает во всех операционных системах (32 и 64 бит), кроме Windows 2008 R2 (SP0 & SP1)
fSvcMgr := OpenSCManagerW(PwideChar(FOptions.ComputerName), nil,
SC_MANAGER_ALL_ACCESS);
if fSvcMgr = 0 then
begin
iserror := true;
RaiseLastWin32Error;
end;
...
fSvc := OpenServiceW(fSvcMgr, pwidechar(Service_name),SERVICE_ALL_ACCESS);
if fSvc = 0 then
begin
fSvc := CreateServiceW(fSvcMgr,
pwidechar(Service_name),
pwidechar(Service_name),
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
pwidechar(fServiceName), nil, nil, nil, nil, nil);
if fSvc = 0 then
begin
iserror := true;
RaiseLastWin32Error;
end;
end;
Это происходит при подключении к удаленному 32-битному компьютеру:
При отладке происходит сбой delphi в строке CreateserviceW с сообщением «Исключение, определенное приложением (код 0x000006d1) при ... процесс остановлен.
попробуйте / кроме как вокруг createserviceW не имеет никакого значения.
При подключении к удаленной 64-битной машине все работает отлично!