it-swarm-ru.tech

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

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

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


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

  1. Изменяя исполняемый файл, я могу удалить запись trustInfo из манифеста (или полностью манифеста, чтобы я мог использовать внешний), что позволяет программе запускаться без UAC. К сожалению, это изменяет исполняемый файл, поэтому он завершается вскоре после проверки внутренней контрольной суммы.
  2. Используя Process Explorer, я могу запустить его как пользователь с ограниченными правами. Однако это, кажется, ограничивает его значительно больше, чем мне бы хотелось (он работает как защищенный режим IE и ​​поэтому может получить доступ значительно меньше, чем мой стандартный пользователь без повышенных прав).
113
Andrew Russell
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 Prompt.

68
Vom

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

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

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

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

На основании Vom's ответ


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

48
Hjulle

Надеюсь, я еще не опоздал на вечеринку, но я искал похожий вопрос и, не увидев здесь ответа, обнаружил, что встроенная в 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.

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

33
Mxx

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

13
palswim

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

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

В принципе:

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

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

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

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

3
user53639

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

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

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

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

в

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

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

1
Aurimas