يتم رفض الوصول أثناء الوصول إلى الأنبوب المسمى من نظام آخر
-
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.
عندما تريد فتحه (مع وصول الكتابة) من الحساب المجهول ، قد تضطر إلى تغيير سمات أمان الأنبوب كما هو موضح هنا.
لا تنتمي إلى StackOverflow