Erste Zugriff verweigert Während die Named Pipe von einem anderen System zugreifen
-
01-10-2019 - |
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.
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 .