Получение доступа запрещено при доступе к названной трубе из другой системы

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