فشل AssignProcessToJobObject بسبب خطأ "تم رفض الوصول" عند التشغيل ضمن مصحح الأخطاء

StackOverflow https://stackoverflow.com/questions/89588

  •  01-07-2019
  •  | 
  •  

سؤال

أنت تفعل AssignProcessToJobObject ويفشل مع "رفض الوصول" ولكن فقط عند تشغيل مصحح الأخطاء.لماذا هذا؟

هل كانت مفيدة؟

المحلول

لقد حيرني هذا لمدة 30 دقيقة تقريبًا.

أولاً، ربما تحتاج إلى بيان UAC مضمن في تطبيقك (كما هو مقترح هنا).شيء من هذا القبيل:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <!-- Identify the application security requirements. -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level="asInvoker"
            uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
  </assembly>

ثانيًا (وهذا هو الجزء الذي علقت فيه)، عندما تقوم بتشغيل تطبيقك ضمن مصحح الأخطاء، فإنه ينشئ العملية الخاصة بك في كائن وظيفة.والتي يجب أن تكون عملية طفلك قادرة على الانفصال عنها قبل أن تتمكن من تعيينها في وظيفتك.لذلك (دوه)، تحتاج إلى تحديد CREATE_BREAKAWAY_FROM_JOB في الأعلام ل CreateProcess).

إذا لم تكن تعمل تحت مصحح الأخطاء، أو كانت عملية والدك في الوظيفة، فلن يحدث هذا.

نصائح أخرى

يبدو أن هذا يضايقني كثيرًا، وعلى الرغم من كونه جيدًا، إلا أن منشور 1800INFORMATION لا يبدو أنه يتضمن عددًا من الأسباب والإصلاحات التي تبدو مفيدة، لذلك يبدو من المفيد نشر ملخص عن سبب حدوث ذلك.

  1. عند محاولة حل هذا بنفسك ، لاحظ أن هذه المشكلة يمكن أن تحدث لأسباب مختلفة عند الركض من cmd.exe و explorer و Visual Studio.يمكن أن تساعد محاولة تشغيل الفشل القابل للتنفيذ من الأماكن المعنية في تحديد سبب المشكلة.قد تعمل التطبيق فقط على العثور على cmd.exe على الرغم من الفشل من VSو Explorer.exe
  2. في حالتي ، بموجب WIN7 ، بدا أنني بحاجة إلى إلغاء توصيل عنصر "SupportOdos" الذي يشير إلى توافق WIN7 من ملف App.Manifest.يبدو أن هذا يحل المشكلة عند التشغيل من Explorer.لإضافة بيان ، انقر بزر الماوس الأيمن على المشروع ، واضغط على الإضافة ، والعثور على "ملف واضح".
  3. لكي يعمل Visual Studio 2010، يبدو أنني بحاجة إلى إيقافه عن استخدام مساعد توافق البرامج، يشارك توم مينكا طريقتين للقيام بذلك هنا: https://stackoverflow.com/a/4232259/86375, لاحظ أنه اضطررت إلى إعادة تشغيل VS2010 لإجراء التغييرات المقترحة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top