2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128

Заставить программу запускаться *без* привилегий администратора или UAC?

Могу ли я каким-либо образом заставить программу, которая обычно требует привилегий администратора (через UAC) запускаться без них? (т.е.: без подсказки UAC и нет общесистемного доступа.)

Добавлено: без изменения самого исполняемого файла.

  • *

Несмотря на ответ Джеймса, я нашел несколько способов almost сделать это:

  1. Модифицируя исполняемый файл, я могу удалить запись trustInfo из манифеста (или манифеста целиком, так что я могу использовать внешний), позволяя программе запускаться без UAC. К сожалению, это изменяет исполняемый файл, поэтому он выходит вскоре после этого из-за внутреннего теста контрольной суммы.

  2. Используя Проводник процессов, я могу запустить его как ограниченный пользователь. Однако это, кажется, ограничивает его значительно больше, чем мне хотелось бы (он работает как Protected Mode IE и поэтому может получить доступ значительно меньше, чем мой стандартный пользователь без права доступа).

答案 (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Сохраните этот текст в <name_of_file>.reg и добавьте его в реестр Windows. (Двойной щелчок на ней должен помочь.)

После этого щелкните правой кнопкой мыши приложение, которое вы хотите запустить без привилегий администратора, и выберите “Выполнять без повышения привилегий”.

В некоторых случаях - небольшое количество 0.1% программ может дважды спросить о подсказке UAC.

57
57
57
2015-10-02 11:27:02 +0000

Сохранить в nonadmin.bat:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Теперь вы можете перетаскивать программы сюда, чтобы запустить их без администратора.

Это не требует привилегий администратора, как это делает изменение ключа реестра. Также вы не будете загромождать контекстное меню.

Основано на Vom’s answer

  • *

Обновление: Теперь должно работать и с программами, в имени которых есть пробелы.

35
35
35
2012-01-05 08:15:03 +0000

Надеюсь, я не опоздал на вечеринку, но я искал похожий вопрос, и не увидев ответа здесь, я обнаружил, что команда builtin RunAscommand в Windows, при запуске от имени администратора, может сделать это с ключом /trustlevel.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
                  in /showtrustlevels.

Это сработало в моем случае. По иронии судьбы, запуск программы явно без указания высоты требует наличия командной строки с указанием высоты. Попробуйте представить. :) Надеюсь, это вам поможет.

19
19
19
2016-09-09 20:16:13 +0000

Если у вас есть определенное приложение, которое вы хотите всегда запускать без UAC, вы можете нацелить его на реестр (добавить текст в REG файл и импортировать его в реестр):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

В отличие от этого ответа , это решение не требует никаких альтернативных щелчков или изменений в пользовательском взаимодействии.

Microsoft вызывает этот процесс, добавляя RunAsInvoker “Compatibility Shim” .

4
4
4
2019-01-25 11:54:23 +0000

Если это установочный (инсталляционный) exe файл, требующий привилегий администрирования, есть трюк, чтобы запустить его без повышенного доступа:

Если имя файла содержит слова типа setup или install windows принудительно запускает его с повышенным доступом, даже если ему не нужен повышенный доступ:

Когда . . в файле exe есть манифест, эта эвристика не применяется.

Например, если манифест показывает, что exe не нуждается в возвышении, даже включение любого из этих слов в имя файла не заставит его работать с возвышенным доступом.

Другое ключевое слово - patch, как указано в Mgamerz в комментариях.

Это записано в документах UAC (User Account Control):

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

Обнаружение инсталлятора относится только к:

  • 32-битным исполняемым файлам.

  • Приложениям без атрибута запрашиваемого уровня выполнения.

  • Интерактивные процессы, выполняемые стандартным пользователем с включенным UAC.

  • Перед созданием 32-битного процесса проверяются следующие атрибуты, чтобы определить, является ли он инсталлятором:

  • Имя файла включает в себя ключевые слова, такие как “install”, “setup” или “update”.

Режим чтения здесь: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

3
3
3
2011-05-18 01:05:06 +0000

Я решил эту проблему сегодня с помощью инструментария для настройки MS-приложений.

Я следовал инструкциям в технической республике статья .

В основном:

1) Вы получаете инструментарий из MS здесь .

2) Нажмите Исправить

3) Выберите RunAsInvoker параметр

4) Щелкните правой кнопкой мыши исправление и выберите Установка

2
2
2
2013-07-21 02:56:41 +0000

В то время как в своем вопросе Эндрю заявил, что следующее не совсем работает:

Модифицируя исполняемый файл, я могу удалить запись trustInfo из манифеста (или манифеста целиком, так что я могу использовать внешний), позволяя программе запускаться без UAC. К сожалению, это изменяет исполняемый файл, поэтому он выходит вскоре после этого из-за внутреннего теста контрольной суммы.

я смог изменить внешний файл .manifest для программного обеспечения, которое я использовал и изменить

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Оказывается, программное обеспечение, которое я использовал, на самом деле не требуют прав администратора, так что я смог запустить его на стандартной учетной записи пользователя без UAC или паролей администратора. Спасибо!

-2
-2
-2
2012-04-20 04:28:43 +0000
-5
-5
-5
2010-08-04 14:09:46 +0000

Нет, если программа требует UAC, то она пытается получить доступ к чему-то за пределами своей песочницы. Программа не будет корректно работать без повышенного доступа.

Если вы просто хотите избавиться от уведомления, вы можете отключить UAC.

Отключить UAC на Windows Vista: Запустите, введите “user”. Нажмите на “Учетные записи пользователей”. В появившемся окне нажмите “User Account Control Settings” (Параметры управления учетными записями пользователей) и затем отключите UAC.

Disable UAC on Windows 7: Start (Запуск), введите “user” (Пользователь). Нажмите на “User Account Control Settings” (Настройки контроля учетных записей пользователей). Перетащите панель выбора до конца вниз на “Never Notify” (Никогда не уведомлять).

相关问题

3
19
10
28
7