1

名前付きパイプがあり、システムで実行されるクライアントを使用してアクセスしている間は正常に動作します

クライアントは、次のコードを使用してファイルを開こうとします。

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

私が使用した名前付きパイプの作成中に

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

の代わりにmyServerNameを使用し.(Dot)ました。別のシステムからクライアントを実行しているときに、GLE 5 (アクセスが拒否されました) が発生します。

4

2 に答える 2

1

まず最初に、権限とファイアウォールを確認してください。ほとんどの場合、何かがローカルでは機能するがネットワーク上では機能しない場合、それはパーミッションです。

(数え切れないほどこの問題に遭遇しました!)

于 2010-09-08T11:27:58.127 に答える
1

ちなみに、Windows Vista では、名前付きパイプへの匿名アクセスのセキュリティが変更されました。
匿名アカウントから (書き込みアクセスで) 開く場合は、ここで説明されているように、パイプのセキュリティ属性を変更する必要がある場合があります。

于 2010-09-08T12:42:08.357 に答える