Получение доступа запрещено при доступе к именованному каналу из другой системы - PullRequest
1 голос
/ 08 сентября 2010

У меня есть именованный канал, и он работает нормально, когда я обращаюсь к нему с помощью клиента, который работает в моей системе

Клиент пытается открыть файл, используя следующий код:

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 (доступ запрещен) при запуске клиента из другой системы.

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

AFAIR произошло изменение безопасности анонимного доступа к именованным каналам в Windows Vista.
Когда вы хотите открыть его (с доступом для записи) из анонимной учетной записи, вам, возможно, придется изменить атрибуты безопасности канала, как описано здесь .

1 голос
/ 08 сентября 2010

Перво-наперво - проверьте ваши разрешения и брандмауэр. Почти всегда, когда что-то работает локально, но не в сети, это разрешения.

(Была ли эта проблема больше, чем я могу сосчитать!)

...