Недавно переместив из Vista 32 бита к Windows 7 64bit, одна из моих программ теперь требует прав администратора.
Я использую довольно экзотический текстовый редактор (Темно-красный Редактор). Хотя не разработанный для Vist/Win7 это работало хорошо с Vista. Но в соответствии с Windows 7, исполняемый файл программы получает этот щит контроля учётных записей, добавленный к его значку (даже при том, что флаг "Run as administrator" на вкладке совместимости не установлен), и запрашивает повышение каждый раз, когда я выполняю его.
Как Win7 решает, что для этого подобного блокноту приложения нужны права администратора? Как я могу переопределить эту ложную эвристику?
Нет, причина, Темно-красный Редактор делает это, состоит в том, не потому что это не подписано. (И это не в новинку для Win7). Это - потому что декларация приложения, которая встраивается во время компиляции, указывает requestedPrivilegeLevel="highestLevel"
.
Согласно этому сообщению форума, Темно-красные разработчики Редактора изменили это в пересмотре 237-241. Они сделали это, потому что функция "Add Crimson Editor to shell context menus" требует административных привилегий.
Долгосрочная фиксация была бы, чтобы Темно-красные разработчики Редактора исправили свою декларацию приложения. Они должны добавить себя к контекстным меню оболочки во время установки или по крайней мере сказать пользователям, что должны вручную запустить поднятое приложение (который легко сделать) вместо того, чтобы требовать его.
Для всех приложений с requestedPrivilegeLevel="highestLevel"
в их декларации (используют Явное Представление для просмотра деклараций приложения), можно использовать Инструментарий Совместимости приложения Microsoft для шиммирования приложения с RunAsInvoker, фиксируют, который вынуждает приложение работать со стандартными пользовательскими маркерами.
Для получения дополнительной информации о том, как использовать Инструментарий Совместимости приложения, см. это сообщение о применении его Темно-красному Редактору или общим инструкциям.
Существует некоторая информация об эвристике здесь: http://msdn.microsoft.com/en-us/library/aa905330.aspx
Декларация может помочь управлять некоторыми из этих вещей.
Если у Вас есть Visual Studio, можно сделать следующее:
HTH
Kevan