Frage

Ich versuche, einen CGI-Prozess zu meinem Windows-Dienst mit einem Named Pipe zu verbinden. Mein Code läuft gut einen anderen Server auf meinem Entwicklungscomputer verwenden, aber auf IIS gibt es Probleme der Sicherheit, wenn ich Createfile () in der CGI-Prozess aufrufen.

Der Windows-Dienst ist der Named Pipe-Server und so der CGI-Prozess versucht, dass Named Pipe als Client zu verbinden.

Ich habe einige Codes ausgegraben, das eine globale Sicherheitsbeschreibung mit der Flagge SECURITY_WORLD_SID_AUTHORITY durch den Aufruf erzeugt:

  InitializeAcl()
  AddAccessAllowedAce()
  SetSecurityDescriptorDacl()

Aber ich verstehe nicht wirklich das Konzept. Ich gehe davon aus, dass der Pipe-Server CreateNamedPipe () muss mit dieser ACL in der SECURITY_ATTRIBUTES Struktur, aber was ist mit dem Named Pipe-Client aufgerufen werden?

erstelle ich eine weitere globale Sicherheitsbeschreibung und rufen Sie Createfile () mit dem?

Habe ich erben sie mit

 SecurityAttributes.bInheritHandle   = TRUE;

Sie gebe ich nur Null in der Createfile () nennen?

War es hilfreich?

Lösung

Da das Rohr vom Server erstellt wird, wird nur der Server die ACL angeben muss, verwendet der Client für die ACL NULL.

Vererbung gilt nur, wenn die Named Pipe in einem Prozess erstellt wird und dass Prozesse einen neuen Prozess erstellt, in dem Sie das erzeugte Prozess will den Griff direkten Zugang zu haben (es wieder öffnet den Griff nicht, vielmehr wird es den Wert eine andere Art und Weise, wie eine Befehlszeile).

Sie können den Process Explorer verwenden, um auf sysinternals genannt ansehen Rohre in einem Prozess offen und schauen dann an der ACL.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top