سؤال

لدي عنصر تحكم ActiveX أقوم بتحميله باستخدام JavaScript في Internet Explorer.يجب تشغيله كتكامل متوسط ​​ضمن UAC في نظامي التشغيل Vista وWin7.هذا مكتوب بلغة C/C++، وتم تجميعه في Visual Studio.

تتمثل إحدى طرق رفع الامتيازات في إنشاء عملية وسيط يمكنها طلب مستوى تكامل متوسط.ومع ذلك، بالنسبة لهذا المشروع، هذا ليس حلاً عمليًا.أحتاج حقًا إلى تشغيل عنصر تحكم ActiveX نفسه بشكل مرتفع.

سؤالي هو:ما هي أسهل طريقة للقيام بذلك؟هل يمكنني تغيير خيارات البناء في المشروع ليكون ملف exe، واستخدام نظام الاتصال بين العمليات COM للتعامل مع الاتصالات تلقائيًا، أم هل أحتاج إلى أن أكون أكثر تعقيدًا؟هل أحتاج إلى القيام بأي شيء معقد مثل الاتصال بـ CreateProcess يدويًا وإنشاء نوع ما من الوسيط، أم أنه يمكن أن يعمل فقط كملف ActiveX exe الذي يرفع نفسه؟

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

المحلول

يعتمد الأمر في الغالب على ما يفعله عنصر تحكم ActiveX الخاص بك، وكيفية تضمينه في الصفحة وكيفية تنفيذه.

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

إذا كنت لا تريد الذهاب إلى هذا الحد، فيمكنك كتابة خادم مخصص بسيط خارج العملية والذي تقوم بتسجيله مرة أخرى وتنفيذ خادمك الخاص IClassFactory لتوكيل طلبات الإنشاء في ملف DLL الموجود.يمكنك أيضًا إضافة مفتاح AppID للكائن الموجود لديك وتحديده DllSurrogate بالرغم من ذلك (بخلاف تسجيله كتطبيق COM+) قد لا تتمكن بسهولة من فرض إنشاء الكائن في البديل (لأن الإعداد الافتراضي لـ IE هو تحديد CLSCTX_ALL عند إنشاء الكائنات التي ستلتقط التسجيل قيد التشغيل أولاً) .

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

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