Я разрабатываю программу на C++, которая может использовать вспышку Adobe Flash, хотя это не является существенным.
Я использую CoCreateInstance для создания флеш-объекта, и если он терпит неудачу, я знаю, что вспышка не установлена, поэтому я ее не использую.
Однако, в Vista (и я думаю, что Windows 7 также), когда вспышка не установлена, после выхода из приложения «Помощник по совместимости программ» выдает сообщение о том, что «для этой программы требуется отсутствующий компонент Windows», указав flash.ocx.
Есть ли способ предотвратить появление этого сообщения? Я не хочу принуждать пользователя устанавливать flash (особенно потому, что это IE ActiveX, и пользователи FireFox, возможно, его не установили), и мое приложение может работать хорошо без вспышки.
Плюс это сообщение действительно раздражает, когда оно появляется после каждого прогона.
Я не имею в виду, конечно, отключение PCA на компьютере пользователя, но программно отключить этот конкретный внешний вид на всех машинах.Как я могу предотвратить программное появление «Помощника по совместимости программ» в Vista (и Windows 7)?
Любые мысли?
Благодаря
[EDIT:]
Я последовал пример Шей в (спасибо), и сделал еще несколько рытья моего. Я добавил следующий 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)
Это решало проблему на Висте 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?
Благодарим за быстрый ответ. Я следовал твоему примеру, но проблема не была полностью решена. См. Отредактированный вопрос выше. – Asaf