سؤال

لقد لاحظت أنه إذا كانت معلمة المسار إلى CreateFile أهداف الدالة \Windows\System32\ فشل المكالمة مع رمز الخطأ التالي ERROR_PATH_NOT_FOUND.

مسار الملف صحيح، أنا مالك المجلد، بحيث يكون السؤال هو السبب في فشل المكالمة؟ هل MS إضافة سياسة خاصة تحظر المجلد من الوصول إليها؟

عينة من الرموز:

TCHAR szFile[MAX_PATH];
PathCombine(szFile, g_szSystemDirectory, "settings.ini");

HANDLE hFile = CreateFile(szFile,
                          GENERIC_READ,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          0,
                          NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
    printf("INVALID FILE: %i", GetLastError());
    return FALSE;
}
هل كانت مفيدة؟

المحلول

  1. هل يمكننا أن نرى بعض رمز المثال؟
  2. هل حددت محرك الأقراص، أي "C: Windows System32 "
  3. هل تحاول فتح ملف داخل System32؟
  4. هل يحدث هذا على نظام التشغيل Windows 7 فقط؟ و
  5. لماذا تحتاج إلى تعديل أي شيء داخل System32 في المقام الأول؟

billy3.

نصائح أخرى

إذا كان تطبيق 32 بت يعمل على نظام تشغيل 64 بت، فسيتم استدعاء WOW64DisableWOW64fsrection () قبل أن تتم قراءة مكالمتك إلى CreateFile من "C: Windows System32" بدلا من "C: Windows Syswow64"، والذي ربما ماذا يحدث لك.

استخدام Windows XP كلا المسؤولين / الحسابات القياسية لا تتطلب حقوق إدارية للحصول على مقابض الجهاز.

لقد تغير هذا في نظام التشغيل Vista و Windows 7 (UAC) حيث يجب أن يكون لديك حقوق المسؤول للحصول على مقابض الجهاز.

بعض الحلول هي:

  1. استخدام خدمة
  2. استخدام كوم ارتفاع مانكر
  3. استخدام البيان

ملاحظة: إذا كنت بحاجة فقط إلى الاستعلام عن المعلومات الإحصائية من جهاز، فلا يحتاج إلى حقوق إدارية. عند استخدام CreateFile(), ، حدد الصفر (0) ل dwdesiredaccess. معامل.

ربما يحتاج البرنامج إلى تشغيله كمسؤول. سيكون عليك تصعيد امتيازاتك، حتى لو كنت مسؤولا. انقر بزر الماوس الأيمن عند تشغيل البرنامج وانقر فوق "تشغيل كمسؤول"، أو تحرير الخصائص وحدد دائما تشغيل كمسؤول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top