Предотвратите повышение (контроль учётных записей) для приложения, для которого не нужен он [дубликат]

Недавно переместив из Vista 32 бита к Windows 7 64bit, одна из моих программ теперь требует прав администратора.

Я использую довольно экзотический текстовый редактор (Темно-красный Редактор). Хотя не разработанный для Vist/Win7 это работало хорошо с Vista. Но в соответствии с Windows 7, исполняемый файл программы получает этот щит контроля учётных записей, добавленный к его значку (даже при том, что флаг "Run as administrator" на вкладке совместимости не установлен), и запрашивает повышение каждый раз, когда я выполняю его.

Как Win7 решает, что для этого подобного блокноту приложения нужны права администратора? Как я могу переопределить эту ложную эвристику?

34
задан 18.08.2009, 19:14

3 ответа

Нет, причина, Темно-красный Редактор делает это, состоит в том, не потому что это не подписано. (И это не в новинку для Win7). Это - потому что декларация приложения, которая встраивается во время компиляции, указывает requestedPrivilegeLevel="highestLevel".

Согласно этому сообщению форума, Темно-красные разработчики Редактора изменили это в пересмотре 237-241. Они сделали это, потому что функция "Add Crimson Editor to shell context menus" требует административных привилегий.

Долгосрочная фиксация была бы, чтобы Темно-красные разработчики Редактора исправили свою декларацию приложения. Они должны добавить себя к контекстным меню оболочки во время установки или по крайней мере сказать пользователям, что должны вручную запустить поднятое приложение (который легко сделать) вместо того, чтобы требовать его.

Для всех приложений с requestedPrivilegeLevel="highestLevel" в их декларации (используют Явное Представление для просмотра деклараций приложения), можно использовать Инструментарий Совместимости приложения Microsoft для шиммирования приложения с RunAsInvoker, фиксируют, который вынуждает приложение работать со стандартными пользовательскими маркерами.

Для получения дополнительной информации о том, как использовать Инструментарий Совместимости приложения, см. это сообщение о применении его Темно-красному Редактору или общим инструкциям.

22
ответ дан 07.12.2019, 09:04
  • 1
    Кроме того, Вы могли заменить существующую декларацию с помощью инструмента mt.exe командной строки, который можно освободиться с Visual Studio Express (многоречивый, но стоящий того при ударе этой проблемы много). Обратите внимание, что замена встроенной декларации изменит .exe файл, так a) удостоверяетесь, что у Вас есть копия его в случае, если Вы повреждаете вещи и b) если это было подписано, Вы повредите подпись (но кажется в этом случае, что Вы уже решили, что это не подписано так или иначе). – AdamV 02.11.2009, 13:00

Существует некоторая информация об эвристике здесь: http://msdn.microsoft.com/en-us/library/aa905330.aspx

Декларация может помочь управлять некоторыми из этих вещей.

4
ответ дан 07.12.2019, 09:04

Если у Вас есть Visual Studio, можно сделать следующее:

  1. Откройте Visual Studio как администратора.
  2. Нажмите Ctrl-O для открытия файла
  3. Обзор к папке, где Темно-красный Редактор является и открывает cedt.exe
  4. Файл открыт с помощью редактора ресурса, и Вы будете видеть дерево с ответвлением под названием RT_MANIFEST, разворачивать это и дважды щелкать по единственному дочернему элементу, названному "1 [английские Соединенные Штаты]"
  5. Приблизительно три четверти пути вниз в правом столбце, Вы будете видеть requestedExecutionLevel уровень = "highestAvailable", изменять "highestAvailable" на "asInvoker" (NB редактор открывается в режиме замены по умолчанию.
  6. Сохраните файл, и Вы сделаны.

HTH

Kevan

7
ответ дан 07.12.2019, 09:04

Теги

Похожие вопросы