Du wertest die Ergebnisse der
API Aufrufe nicht aus und wunderst dich tatsächlich, warum du keine genaue Information bekommst, was nicht funktioniert?
ts ts ts ts ts ...
Mal abgesehen davon, dass ich die
Unit nicht erstellt habe, sondern bislang einfach nur verwendet habe (unter #1 erwähnt) und die ja auch bei hunderten von Installationen nie ein Problem gemacht hat, geht der Aufruf ja noch weiter:
Delphi-Quellcode:
procedure TServiceManager.QueryServiceConfig(SHandle : THandle; Var Config : TServiceDescriptor);
Var
SvcCfg : LPQuery_Service_ConfigW;
BytesNeeded : DWord;
begin
Winsvc.QueryServiceConfig(SHandle,Nil,0,BytesNeeded);
If (GetLastError<>ERROR_INSUFFICIENT_BUFFER) then
RaiseLastOSError;
GetMem(SvcCfg,BytesNeeded);
Try
If Not Winsvc.QueryServiceConfig(SHandle,SvcCfg,BytesNeeded,BytesNeeded) then
RaiseLastOSError;
With config,SvcCfg^ do
begin
Password:='';
Name:='';
DesiredAccess:=0;
ErrorControl:=dwErrorControl;
ServiceType:=dwServiceType;
StartType:=dwStartType;
TagID:=dwTagID;
CommandLine:=lpBinaryPathName;
LoadOrderGroup:=lpLoadOrderGroup;
Dependencies:=lpDependencies;
UserName:=lpServiceStartName;
DisplayName:=lpDisplayName;
end;
Finally
FreeMem(SvcCfg,BytesNeeded);
end;
end;
Also im Prinzip hier, wie von Dalai verwendet.