別のシステムから名前付きパイプにアクセスしている間にアクセスを拒否する

StackOverflow https://stackoverflow.com/questions/3667144

質問

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

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

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(アクセス拒否)を取得します。

役に立ちましたか?

解決

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

(この問題は私が数えることができるよりも多くの時間を持っていました!)

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top