يتم رفض الوصول أثناء الوصول إلى الأنبوب المسمى من نظام آخر

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