Frage

Ich habe eine Named Pipe und es funktioniert gut, während ich darauf zugreifen einen Client mit, die auf meinem System läuft

Der Kunde versucht, die Datei mit folgendem Code zu öffnen:

LPTSTR lpszPipename = TEXT("\\\\smyServerName\\pipe\\iPipe01"); 

      hPipe = CreateFile( 
         lpszPipename,   // pipe name 
         GENERIC_READ |  // read and write access 
         GENERIC_WRITE, 
         0,              // no sharing 
         NULL,           // default security attributes
         OPEN_EXISTING,  // opens existing pipe 
         0,              // default attributes 
         NULL);     


      if (hPipe != INVALID_HANDLE_VALUE) 
         break; 

      // Exit if an error other than ERROR_PIPE_BUSY occurs. 

      if (GetLastError() != ERROR_PIPE_BUSY) 
      {
         _tprintf( TEXT("Could not open pipe. GLE=%d\n"), GetLastError() ); 
         return -1;
      }

Während die Named Pipe ich verwendet habe Erstellen

lpszPipename = TEXT("\\\\.\\pipe\\iPipe01"); 

Statt myServerName habe ich gebraucht .(Dot). Ich erhalte GLE 5 (Zugriff verweigert), während ich den Client von einem anderen System ausgeführt werden.

War es hilfreich?

Lösung

Das Wichtigste zuerst - überprüfen Sie Ihre Berechtigungen und Firewall. Fast immer, wenn etwas lokal, aber nicht auf dem Netzwerk funktioniert, ist es Berechtigungen.

(habe dieses Problem öfter als ich zählen kann!)

Andere Tipps

AFAIR gab es eine Änderung der Sicherheit von anonymen Zugriff auf Named Pipes in Windows Vista.
Wenn Sie öffnen wollen es (mit Schreibzugriff) von dem anonymen Konto, können Sie die Rohr Sicherheit ändern müssen, wie Attribute hier .

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