Я разрабатываю программу на C ++, которая может использовать Adobe Flash, хотя это не обязательно.
Я использую CoCreateInstance для создания объекта flash, и если он не работает, я знаю, что flash не установлен, поэтому я его не использую.
Однако в 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?