Question

Je suis un problème avec le programme Je travaille actuellement sur. Elle est causée par la sécurité accrue dans Vista / Windows 7, plus précisément l'UIPI qui empêche une fenêtre avec un niveau d'intégrité inférieur « parler » à un niveau supérieur.

Dans mon cas, je suis désireux de dire la fenêtre avec un haut niveau d'intégrité pour se déplacer dans notre application, il fonctionne parfaitement sur XP ou Windows 7 avec la sécurité au large.

Je l'ai essayé de placer le HWND de la fenêtre IL plus directement, plutôt que d'utiliser la fonction FindWindow (), cela fonctionne très bien, mais le programme échoue lorsque vous essayez de déplacer ou d'interagir avec elle en général. Le WindowHandle est enregistré par l'application pour être intégré et lu par l'application en cours d'exécution à une IL inférieure.

J'ai aussi essayé de placer UIAccess dans le manifeste à TRUE et la signature numérique du programme, mais pas de chance.

Toutes les idées sur la façon de résoudre ce problème? merci.

Était-ce utile?

La solution

Je pensais juste que je suivais cela pour tous ceux qui se débattait aussi comme je l'ai finalement trouvé une façon de le faire.

IL = le niveau d'intégrité.

J'ai eu 2 applications, highIL.exe et lowIL.exe, le highIL voulait trouver la fenêtre lowIL.exe, définir comme une fenêtre enfant et le déplacer dans une zone créée pour lui sur le highIL.exe. Cela a été bloqué par le UIPI vista +.

A la fin i utilisé la méthode de ChangeWindowMessageFilter dans Vista et le ChangeWindowMessageFilterEx dans Windows7, à la fois trouvée dans le user32.dll. Ces fonctions vous permettent de percer un trou dans le UIPI pour permettre aux messages que vous voulez à travers.

J'ai créé quelques messages personnalisés en utilisant la fonction RegisterWindowMessage, j'ai utilisé cette fonction pour enregistrer la méthode dans les deux applications highIL et lowIL, la ligne avait l'air un peu comme ceci:

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

Le lowIL.exe est alors en mesure d'envoyer ces messages à la fenêtre highIL.exe sans qu'ils soient bloqués. Puis ce fut un cas de tout simplement l'ajout et l'écriture de gestionnaires de message.

Cette méthode ne fonctionnera que si vous avez accès à la fois le haut et bas IL. Le MSDN a également un exemple de travail de la fonction ChangeWindowMessageFilterEx là-bas site

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top