Получение доступа запрещено при доступе к названной трубе из другой системы
-
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.
Когда вы хотите открыть его (с доступом к записи) с анонимного аккаунта, вам может придеться изменить атрибуты безопасности трубы, как описано здесь.