No creo que sabiendo el exe puedas saber el nombre del servicio, pero no soy un gran conocedor del tema, lo que supongo que si puedes hacer es a partir del nombre localizar el servicio si está funcionanado, y de aqui tirar del handler del proceso, y el exe que está detras.
Yo tengo un código -copiado de nosedonde- que hace esto: le das un nombre de exe, y te busca el handler al proceso, y tu ya de ese handler buscas lo que necesites de nombre de servicio y esas cosas. No estoy seguro del todo de que sirva para servicios, supongo que si, yo lo uso para excel y esas cosas "normales".
//Sabemos 'WINWORD.EXE', dame un THandle del proceso para hacerle putadillas
function GetProcHandle(ExeFileName: string): THandle;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result:= 0;
FSnapshotHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize:= Sizeof(FProcessEntry32);
ContinueLoop:= Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin
result:= OpenProcess(PROCESS_ALL_ACCESS, FALSE, FProcessEntry32.th32ProcessID);
break;
end;
ContinueLoop:= Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;