Как программно предотвратить появление «Помощника по совместимости программ» в Vista (и Windows 7)?
Я разрабатываю программу на C ++, которая может использовать Adobe Flash, хотя это не является обязательным.
Я использую CoCreateInstance для создания флэш-объекта, и если он не работает, я знаю, что флэш-память не установлена, поэтому я не использую ее.
Однако в Vista (и я думаю, что и в Windows 7), когда флэш-память не установлена, после выхода из приложения «Помощник по совместимости программ» выскакивает сообщение о том, что «Эта программа требует отсутствующий компонент Windows», указывающий флэш-память. OCX.
Есть ли способ предотвратить появление этого сообщения? Я не хочу заставлять какого-либо пользователя устанавливать флэш-память (тем более, что это IE ActiveX, а пользователи FireFox могут его не устанавливать), и мое приложение может работать без флэш-памяти.
Плюс это сообщение действительно раздражает, когда оно появляется после каждого запуска.
Я, конечно, не имею в виду отключение PCA на компьютере пользователя, но программно отключаю этот конкретный вид на всех машинах.
есть идеи?
Спасибо
[РЕДАКТИРОВАТЬ:]
Я последовал примеру Шэя (спасибо) и сделал еще кое-что собственное. Я добавил следующий XML в манифест приложения:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
(смотрите также:msdn.microsoft.com/en-us/library/bb756929.aspx)
Это решило проблему на Vista 64.
Чтобы решить ту же проблему в Windows 7, я добавил следующее:
<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>
(Смотрите также:blogs.msdn.com/yvesdolc/archive/2009/09/22/the-new-compatibility-section-in-the-application-manifest.aspx)
Решил Windows 7.
Но по какой-то причинеэто все еще происходит в Vista 32...
Я также попытался отредактировать манифест определенной DLL, которая вызывает проблему, но это не имело никакого эффекта. Только манифест самого исполняемого файла повлиял на проблему.
Итак ... Vista 32?