سؤال

وأواجه مشكلة مع برنامج أنا أعمل حاليا. وهو ناتج عن زيادة الأمن في ويندوز فيستا / ويندوز 7، وتحديدا UIPI الذي يمنع نافذة مع انخفاض مستوى سلامة "تتحدث" إلى أحد أعلى.

في حالتي، أنا يريد أن يقول نافذة مع مستوى النزاهة العالية للانتقال الى تطبيق لدينا، وهو يعمل لا تشوبه شائبة على XP أو ويندوز 7 مع الأمن خارج.

ولقد حاولت وضع HWND من أعلى نافذة IL مباشرة، بدلا من استخدام وظيفة findwindow ()، وهذا يعمل بشكل جيد ولكن بعد فشل البرنامج عند محاولة تحريكه أو عموما تتفاعل معها. يتم حفظ windowhandle من قبل التطبيق لتكون جزءا لا يتجزأ وقراءتها من قبل التطبيق قيد التشغيل في IL أقل.

ولقد حاولت أيضا وضع UIaccess في البيان إلى TRUE والتوقيع رقميا البرنامج ولكن لا حظ.

وأي أفكار حول كيفية حل هذه المشكلة؟ شكر.

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

المحلول

ومجرد التفكير أود أن متابعة هذا الأمر لأحد الذين ناضلوا أيضا لأنني وجدت أخيرا طريقة للقيام بذلك.

وIL = مستوى النزاهة.

وكان لي 2 التطبيقات، highIL.exe وlowIL.exe، أراد highIL للعثور على نافذة lowIL.exe، تعيينه نافذة الطفل ونقله إلى منطقة خلقت له على highIL.exe. تم حجب هذا من قبل UIPI في ويندوز فيستا +.

في نهاية ط استخدام أسلوب ChangeWindowMessageFilter في ويندوز فيستا وChangeWindowMessageFilterEx في Windows7، و حد سواء وجدت في user32.dll. هذه الوظائف تسمح لك لكزة حفرة في UIPI للسماح للرسائل التي تريد من خلال.

وأنا خلقت بعض الرسائل مخصصة باستخدام وظيفة RegisterWindowMessage، واستخدام هذه الدالة لتسجيل الأسلوب في كل من التطبيقات highIL وlowIL، بدا خط قليلا مثل هذا:

const UINT MY_MOVEINTWINDOW_MSG = RegisterWindowMessage(_T("MyMsg.MoveWindow"));

ووlowIL.exe هو ثم قادرا على إرسال هذه الرسائل إلى إطار highIL.exe بدونها حجبها. ثم كانت حالة ببساطة إضافة وكتابة رسالة معالجات.

وهذه الطريقة لن تنجح إلا إذا كان لديك الوصول إلى كل من ارتفاع وانخفاض IL. لديه MSDN أيضا مثال العمل في وظيفة ChangeWindowMessageFilterEx على وجود موقع

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