سؤال

لقد قمت بإنشاء تطبيق Win32 بسيط لإظهار UxTheme على XP من خلال تضمين اعتماد واضح على Ver 6 commctl32.dll قمت بعد ذلك بإنشاء Win32 DLL بسيط ، بنيت به ISOLATION_AWARE_ENABLED, ، واختبرته مع بيان مضمن يحدد كل من الإصدار 5 و 6 من COMCTL32.DLL

لقد نجحت في الحصول على EXE و DLL لاستخدام إصدارات مختلفة من COMCTL32.DLL باستخدام هذه الطريقة. سواء مع EXE باستخدام 5 و DLL الإصدار 6 ، والعكس.

بعد ذلك ، أقوم بإعادة ضبط التطبيق و DLL للحصول على تبعية واضحة. وقدم ملف تكوين التطبيق:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
  <windows>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df"/>
        <bindingRedirect oldVersion="5.82.7100.0" newVersion="6.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </windows>
</configuration>

الآن ، عندما أقوم بتشغيل طلبي ، يتم إعادة توجيه التطبيقات بشكل واضح إلى Commctl V6 - يتم عرض الحوار بوضوح باستخدام XP UxTheme. ومع ذلك ، لا يتم إعادة توجيه DLL ويستخدم VER 5 من commctl.

لا يوجد ذكر لملفات التكوين لكل DLL للقيام بربط BINDINGREDIRCES في الوثائق. ومحاولة إنشاء واحد لا تفعل أي شيء.

أعلم أيضًا أن القيام بتوصيل Bindingrecrect من إصدار رئيسي من التجميع إلى آخر ليس سيناريوًا مدعومًا ، لكن أنا حقًا أستخدم commctl32 كوسيلة سهلة واضحة لاختبار الميكانيكا.

كيف يمكنني إعادة توجيه نسخة من مجموعة تابعة لـ DLL؟

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

المحلول 2

لذلك ، تم الرد على هذا السؤال.

  • لقد استخدمت عملية شاشة Process لتتبع وصول الملفات ،
  • بعد إدراك أن الوصول إلى ملفات .manifest و .config تأتي من CSRSS.Exe لا عملي الخاص بي ،
  • ولن يقوم Windows Vista حتى الوصول إلى ملفات Manifest أو .Config التي يتم إضافتها لاحقًا لأنها تخزين ما يتواجه وجودها مع ختم وقت التاريخ لـ EXE.

بعد كل ما اكتشفت أن التحميل لا يبحث عن ملف .config عند تحميل DLLs:

full_path_to_dll\dllname.dll.2.config

ستتم معالجة عمليات إعادة التوجيه الملزمة في هذا الملف.

نصائح أخرى

ولن يقوم Windows Vista حتى الوصول إلى ملفات Manifest أو .Config التي يتم إضافتها لاحقًا لأنها تخزين ما يتواجه وجودها مع ختم وقت التاريخ لـ EXE.

لقد وجدت أن تسجيل الخروج/تشغيله يبدو أنه يمسح ملف التكوين المراد قراءته مرة أخرى.

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