Como evitar que programaticamente o “Assistente de Compatibilidade de Programas” no Vista (e no Windows 7) apareça?
Eu desenvolvo um programa em C ++ que pode usar Adobe flash, embora não seja essencial.
Eu uso CoCreateInstance para criar o objeto flash, e se ele falhar, eu sei que o flash não está instalado, então eu não o uso.
No entanto, no Vista (e eu acho que o Windows 7 também), quando o flash não está instalado, depois de deixar o aplicativo, o "Assistente de Compatibilidade de Programa" aparece uma mensagem dizendo que "Este programa requer um componente do Windows ausente" especificando o flash. ocx.
Existe uma maneira de impedir que essa mensagem apareça? Eu não quero forçar qualquer usuário a instalar o flash (especialmente porque é o IE ActiveX, e os usuários do FireFox podem não tê-lo instalado), e meu aplicativo pode funcionar bem sem o flash.
Além disso, esta mensagem é realmente irritante quando aparece após cada execução.
Não quero dizer, é claro, desativar o PCA na máquina do usuário, mas desabilitar programaticamente essa aparência específica em todas as máquinas.
Alguma ideia?
obrigado
[EDITAR:]
Eu segui a liderança de Shay (obrigado), e fiz mais algumas escavações minhas. Eu adicionei o seguinte XML ao manifesto do aplicativo:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
(Veja também:msdn.microsoft.com/pt-br/library/bb756929.aspx)
Isso resolveu o problema no Vista 64.
Para resolver o mesmo problema no Windows 7, adicionei o seguinte:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
(Veja também:blogs.msdn.com/yvesdolc/archive/2009/09/22/the-new-compatibility-section-in-the-application-manifest.aspx)
Resolvido o Windows 7.
Mas por algum motivo,isso ainda acontece no Vista 32...
Eu também tentei editar o manifesto da DLL específica que causa o problema, mas não teve efeito. Apenas o manifesto do executável afetou o problema.
Então ... Vista 32?