Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#1

Named Pipes zwischen Service und eingeschränktem Programm

  Alt 30. Aug 2008, 13:06
Ich habe ein für mich beunruhigendes Problem.

Nachdem ich jetzt eine funktionierende Named-Pipes-Kommunikation zwischen einem Service (der hier u.a. als Pipes-Server dient) und einem normalen Programm (das sich als Client verbinden kann) implementiert habe, kommt mir der böse Verdacht auf, dass das nur funktioniert, wenn das Programm nicht unter einem eingeschränkten Benutzeraccount läuft.

Da das ganze so weit richtig funktioniert hat, poste ich mal nur die entscheidende Stelle im Code:

Delphi-Quellcode:
function TPipeClient.ProcessMsg(aMsg: RPIPEMessage): RPIPEMessage;
begin
  CalcMsgSize(aMsg);
  Result.Size := SizeOf(Result);
  if WaitNamedPipe(PChar(FPipeName), 10) then
    if not CallNamedPipe(
      PChar(FPipeName), @aMsg, aMsg.Size, @Result, Result.Size, Result.Size, 3000
    ) then
      MessageDlg('PIPE antwortet nicht.', mtError, [mbOK], 0)
    else
  else
    MessageDlg('PIPE ist nicht vorhanden.', mtError, [mbOK], 0);
end;
CallNamedPipe schlägt fehl, wenn das Programm mit eingeschränkten Rechten läuft und es kommt die Meldung 'PIPE antwortet nicht.'. (Wenn der Service/Server nicht aktiv ist, dann kommt die korrekte Meldung, dass die Pipe nicht vorhanden sei. Auch mit eingeschränkten Rechten wird also nocht erkannt, ob die Pipe vorhanden ist oder nicht.)

Kann man da irgendwas machen? Irgendwie fühle ich mich hier von Windows auf den Schlips getreten...
Es muss doch möglich sein, dass selbst ein eingeschränktes Programm noch über Pipes kommunizieren kann!?
  Mit Zitat antworten Zitat