別のシステムから名前付きパイプにアクセスしている間にアクセスを拒否する
-
01-10-2019 - |
質問
名前付きパイプがあり、システムで実行されるクライアントを使用してアクセスしているときに正常に動作します
クライアントは、次のコードを使用してファイルを開こうとします。
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の名前付きパイプへの匿名アクセスのセキュリティの変更がありました。
匿名アカウントから(書き込みアクセスを使用して)開きたい場合は、説明されているようにパイプのセキュリティ属性を変更する必要がある場合があります。 ここ.
所属していません StackOverflow