Domanda

Ho un named pipe e funziona benissimo Mentre io accedervi utilizzando un client che gira sul mio sistema

il client tenta di aprire il file utilizzando seguente codice:

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;
      }

durante la creazione del tubo ho chiamato hanno utilizzato

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

Invece di myServerName ho .(Dot) utilizzato. Ottengo GLE 5 (Accesso negato), mentre corro il cliente da un altro sistema.

È stato utile?

Soluzione

Per prima cosa - controllare le autorizzazioni e firewall. Quasi sempre, quando qualcosa funziona in locale ma non sulla rete, è permessi.

(avuto questo problema più volte di quanto posso contare!)

Altri suggerimenti

AFAIR c'è stato un cambiamento di sicurezza l'accesso anonimo a named pipe in Windows Vista.
Quando si desidera aprire (con accesso in scrittura) dal account anonimo, potrebbe essere necessario modificare gli attributi di sicurezza del tubo come descritto qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top