Диагностика проявлений приложений Windows
-
09-09-2019 - |
Вопрос
Манифесты приложений Windows имеют очень свободную грамматику — нераспознанные части игнорируются.Как я могу диагностировать, какие части распознаны, а какие нет?
Проблема, приводящая к этому вопросу, связана с приложением, которое имеет параллельный манифест UAC с Запрошенный уровень выполнения из Самый доступный указано.Это должно отключить виртуализацию файлов Vista, но этого не происходит.Я хочу выяснить, почему.Манифест используется, как я проверил, намеренно введя синтаксическую ошибку, но я не вижу способа определить, как он используется.
Решение
Смотрите мой комментарий к Wylder - вы пытались обновить временную метку исполняемого файла и манифеста?
Что возвращает "sxstrace", запускаемый из командной строки с повышенными правами?
Не могли бы вы где-нибудь разместить свой манифест?
Другие советы
У меня была похожая проблема:диспетчер задач показал, что виртуализация включена для запущенных приложений, несмотря на то, что приложения отображаются как наиболее доступные.Я пытался использовать mt.exe для манифеста своих файлов.Это сработало с некоторыми, но не с другими.Это странное поведение заставило меня подумать, что в Vista был какой-то постоянный кэш, который влиял на информацию UAC на основе метки времени exe.Решение состояло в том, чтобы использовать мастер манифеста из Тюнер ресурсов.
Там есть тайник.
Кэш контекста активации SxS кэширует файлы .manifest.
Из того, что я прочитал, предположительно, это кэширует только существование манифеста.
Он основан на памяти и очищается только при перезагрузке - ОДНАКО я точно знаю, что он не всегда очищается при перезагрузке, и многие другие также сообщают об этом.Я нашел c:\windows\sxs\manifestCache и задаюсь вопросом, действительно ли он перезагружается оттуда при перезагрузке.
Единственный способ принудительно изменить - это изменить дату изменения в .exe.
Также будьте осторожны при редактировании вашего манифеста, если вы не поднимете свой редактор, он будет виртуализирован UAC - разумеется, виртуализированная копия игнорируется загрузчиком.
Ссылки:http://blogs.msdn.com/b/junfeng/archive/2006/10/25/touch-the-exe-after-you-added-a-manifest-for-it-in-vista.aspx http://blogs.msdn.com/b/junfeng/archive/2007/10/01/vista-activation-context-cache.aspx
Я бы рассмотрел через Документация чтобы убедиться, что это соответствует спецификации, но кроме этого, насколько мне известно, не существует автоматизированного инструмента для выполнения того же самого.