Pregunta

Estoy teniendo un problema con el programa Actualmente estoy trabajando. Es causado por el aumento de la seguridad en Vista / Windows 7, específicamente la UIPI que impide una ventana con un nivel de integridad inferior 'hablar' a una más alta.

En mi caso, estoy queriendo decir la ventana con un alto nivel de integridad para entrar en nuestra aplicación, funciona perfectamente en XP o Windows 7 con la seguridad fuera.

He intentado fijar el HWND de la ventana más alta de IL directamente, en lugar de utilizar la función FindWindow (), esto funciona bien, pero el programa a continuación, falla al tratar de moverlo o, en general interactuar con él. El WindowHandle es salvado por la aplicación para ser embebido y leído por la aplicación en ejecución en una IL inferior.

También he intentado fijar uiAccess en el manifiesto como TRUE y firmar digitalmente el programa, pero sin suerte.

¿Alguna idea sobre cómo resolver este problema? gracias.

¿Fue útil?

Solución

Sólo pensaba que iba a seguir esto para cualquier persona que también tuvo problemas como por fin he encontrado una manera de hacer esto.

IL = Nivel de Integridad.

Yo tenía 2 aplicaciones, highIL.exe y lowIL.exe, la highIL querían encontrar la ventana lowIL.exe, configurarlo como una ventana secundaria y moverlo en una zona creada por él en el highIL.exe. Este fue bloqueado por la UIPI en Vista +.

Al final i utilizado el método ChangeWindowMessageFilter en vista y la ChangeWindowMessageFilterEx en Windows7, ambos se encuentran en el user32.dll. Estas funciones le permiten hacer un agujero en el UIPI para permitir mensajes que desea a través.

He creado algunos mensajes personalizados utilizando la función RegisterWindowMessage, he utilizado esta función para registrar el método tanto en aplicaciones highIL y lowIL, la línea parecía un poco a esto:

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

El lowIL.exe es entonces capaz de enviar estos mensajes a la ventana highIL.exe sin que sean bloqueadas. Entonces se trataba de un caso de simplemente sumar y escribir manejadores de mensajes.

Este método sólo funcionará si tiene acceso tanto a la alta y la baja IL. El MSDN también tiene un ejemplo de trabajo de la función ChangeWindowMessageFilterEx allí sitio web

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top