111

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

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


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

  1. Изменяя исполняемый файл, я могу удалить запись trustInfo из манифеста (или полностью манифеста, чтобы я мог использовать внешний), что позволяет программе запускаться без UAC. К сожалению, это изменяет исполняемый файл, поэтому он завершается вскоре после проверки внутренней контрольной суммы.
  2. Используя Process Explorer, я могу запустить его как пользователь с ограниченными правами. Однако это, кажется, ограничивает его значительно больше, чем мне бы хотелось (он работает как защищенный режим IE и поэтому может получить доступ значительно меньше, чем мой стандартный пользователь без повышенных прав).

9 ответов9

67
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.

46

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

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

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

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

На основании ответа Вома


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

32

Я надеюсь, что я не слишком поздно для вечеринки, но я искал похожий вопрос и, не видя ответа здесь, я обнаружил, что встроенная команда Windows RunAs , запускаемая от имени администратора, может сделать это с /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.

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

13

Если у вас есть конкретное приложение, которое вы хотите всегда запускать без 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 "Совместимость Shim".

3

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

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

В принципе:

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

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

3) Выберите опцию RunAsInvoker

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

1

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

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

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

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

в

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

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

-1

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

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

-1

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

Я добавил каждого пользователя, который будет запускать эту программу, и дал им права "полного контроля". Это позаботилось о проблеме, и я оставил флажок "Запуск от имени администратора" без проверки.

У меня нет проблем с безопасностью для пользователей, которые будут запускать программу.

-4

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

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

Отключение контроля учетных записей в Windows Vista: запустите, введите "пользователь". Нажмите на "Учетные записи пользователей". В появившемся окне нажмите "Настройки контроля учетных записей", а затем отключите UAC.

Отключить UAC в Windows 7: Пуск, введите "пользователь". Нажмите "Настройки контроля учетных записей". Перетащите панель выбора до самого конца, чтобы "Никогда не уведомлять".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .