Подтвердить что ты не робот

Причины получения диалога "Помощник по совместимости программ"?

Каковы возможные причины появления диалогового окна Помощник по совместимости программ после закрытия моего приложения?

Program Compatibility Assistant image
(источник: microsoft.com)

ОБНОВЛЕНИЕ: Помощник по совместимости программ: часто задаваемые вопросы

Я понимаю, что этот вопрос уже задавался на S.O.

Тем не менее, мое приложение:

  1. PCA получает только после его закрытия
  2. Не пытается делать ничего, что требует повышенных привилегий (я не думаю)
  3. Не получает PCA при запуске из IDE
  4. Не является программой установки/установки
  5. В имени программы нет слова "установщик" или "настройка"
  6. Не выдает исключение при закрытии или выходе с кодом, отличным от 0 (я не думаю)
  7. Не получает PCA, если я добавляю узел <compatibility> в манифест приложения

Примечание № 6 со следующим app.manifest я больше не получаю PCA:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <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>
</asmv1:assembly>

Так что вторая часть, кажется, исправляет это, но я беспокоюсь, что мое приложение все еще делает что-то, о чем я не знаю.

Чтобы было ясно, я задаю вопрос из двух частей:

  1. Какие проблемы могут вызвать появление диалогового окна PCA?
  2. Является ли узел <compatibility> абсолютно необходимым для того, чтобы избежать диалога PCA? Или я все еще делаю что-то не так?
4b9b3361

Ответ 1

В этой статье MSDN описываются многие условия, которые могут вызвать помощник по совместимости программ. Я бы рассмотрел множество сценариев, которые он описывает и посмотрите, распространяется ли какой-либо из них на вашу программу. Я вижу причины для диалогов PCA за пределами исключенных вами условий (например, попытка создать новую папку под %ProgramFiles%).