Pergunta

Estou tendo um problema com o programa em que estou trabalhando atualmente. É causado pelo aumento da segurança no Vista/Windows 7, especificamente o UIPI que impede uma janela com um nível de integridade mais baixo 'conversando' com um maior.

No meu caso, estou querendo dizer à janela com um alto nível de integridade para mudar para o nosso aplicativo, ele funciona perfeitamente no XP ou Windows 7 com a segurança desligada.

Eu tentei definir diretamente o HWND da janela IL mais alta, em vez de usar a função findWindow (), isso funciona bem, mas o programa falha ao tentar movê -lo ou geralmente interage com ele. O WindowHandle é salvo pelo aplicativo a ser incorporado e lido pelo aplicativo em execução em uma IL mais baixa.

Eu também tentei definir o UiAiacess no manifesto como verdadeiro e assinar digitalmente o programa, mas sem sorte.

Alguma idéia de como resolver esse problema? obrigado.

Foi útil?

Solução

Apenas pensei em seguir isso para quem também lutou, pois finalmente encontrei uma maneira de fazer isso.

IL = nível de integridade.

Eu tinha 2 aplicativos, Highil.exe e Lowil.exe, o Highil queria encontrar a janela Lowil.exe, definir -o como uma janela infantil e movê -la para uma zona criada para ele no Highil.exe. Isso foi bloqueado pelo UIPI no Vista+.

No final, usei o método ChangeWindowMessageFilter no Vista e o ChangeWindowMessageFilterex no Windows7, ambos encontrados no usuário32.dll. Essas funções permitem que você cutuque um buraco no UIPI para permitir mensagens que você deseja.

Criei algumas mensagens personalizadas usando a função RegisterWindowMessage, usei essa função para registrar o método em aplicativos Highil e Lowil, a linha parecia um pouco assim:

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

O lowil.exe pode enviar essas mensagens para a janela Highil.exe sem que elas sejam bloqueadas. Então foi um caso de simplesmente adicionar e escrever manipuladores de mensagens.

Esse método só funcionará se você tiver acesso à IL alta e baixa. O MSDN também tem um exemplo de funcionamento da função ChangeWindowMessageFilterex Local na rede Internet

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top