Есть ли способ, что я могу заставить программу, которая, как правило, требует права администратора (через UAC), чтобы работать без них? (т. е.: без запроса UAC и отсутствие системы широкого доступа.)
Добавлено: без внесения изменений в сам исполняемый.
Несмотря на Джеймс'ы ответ, я нашел несколько способов, что это может почти быть сделано:
trustInfo
из манифеста (или манифест полностью, так что я могу использовать внешнюю), позволяющую запуск программы без ОАК. К сожалению, это изменяет исполняемый файл, так что вскоре после выхода из-за испытание внутренним контрольной суммы.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\"\""
Сохранить этот текст в `
После этого, щелкните правой кнопкой мыши приложение, которое вы'd, как запустить без прав администратора и выберите "и работать без полномочий и".
В некоторых случаях - небольшим количеством 0,1% от программы могут просить дважды о запрос контроля учетных записей.
Сохранить в nonadmin.летучая мышь`:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
Теперь вы можете перетаскивать программы на этом запускать их без администратора.
Это не't, требуют наличия привилегий администратора как изменить ключ реестра. Также вы выиграли'т загромождать контекстное меню.
На основе ФОМ'ы ответ
Обновление: теперь должно работать с программами, которые имеют пробелы в имени.
Я надеюсь, что я'м не слишком поздно, чтобы партии, но я искала подобный вопрос и не видя ответа здесь я узнал, что Windows' строение Запуск от имени'command, когда запуск от имени администратора, может сделать это с
/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.
Это сработало в моем случае. Как ни странно, запуск программы явно без возвышения требует привилегированной командной строки. Идите на фиг. :) Я надеюсь, что это помогает вам.
Если у вас есть конкретное приложение, которое вы хотите постоянно работать без 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
"в оболочку совместимости с".
Если это's и установка (монтаж) EXE-файл
, что требует прав, там'ы трюк, чтобы запустить его без повышения уровня доступа:
Если файл's имя содержит такие слова, как "настройка" или "установка" Windows принудительно запускает его с повышенными доступ, даже если это безразлично'т необходимость повышенного уровня доступа:
Если .EXE-файл, есть в ней проявлены, эти эвристики на высоте не применяются.
Это задокументировано на UAC (Контроль учетных записей) документы:
обнаружение установщик обнаружит файлы установки, которые помогают предотвратить выполнение установки без участия пользователя'с ведома и согласия.
Обнаружения установщика применяется только к:
- 32-разрядные исполняемые файлы.
- приложения без запрошенный уровень выполнения атрибута.
- интерактивные процессы, выполняемые в качестве обычного пользователя с включенным UAC.
перед созданием 32-разрядного процесса, следующие атрибуты проверяются, чтобы определить, является ли это установщик:
- имя файла включает в себя такие ключевые слова, как "установить" Ну и"Настройки" или "обновить.&и"
- ...
Режим чтения здесь: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works
Я решил сегодня эту проблему с помощью MS настройки приложения инструментарий.
Я следовал инструкциям в article технологий Республики.
В основном:
Вы получаете набор из МС здесь .
Нажмите Кнопку Исправить
Выбрать RunAsInvoker опция
права кнопку исправления и выберите Установить
А на его вопрос Андрей заявил, что следующим не совсем работает:
путем изменения исполняемый файл я могу удалить запись trustInfo от проявляться (или проявляться полностью, поэтому я могу использовать внешний), разрешение программы для запуска без ОАК. К сожалению, это изменяет исполняемый файл, поэтому он выходит вскоре после того, как из-за внутренней контрольной суммы тест.
Я был в состоянии изменить внешнего .файл манифеста для программного обеспечения я использую и менять
в <ms_asmv2:уровень=на" requestedExecutionLevel;функции requireadministrator-то" для uiaccess=то"ложные" и />
для
в <ms_asmv2:уровень=на" requestedExecutionLevel;значение asinvoker-то" для uiaccess=то"ложные" и />
Оказалось, что софт, что я использую не требует прав администратора, так что я смог запустить его на стандартную учетную запись пользователя без контроля учетных записей или паролей администратора. Спасибо!
Я исправил эту проблему путем происходит изменение разрешений на папку, содержащую программу.
Я добавил каждому пользователю, который будет запускать эту программу, и дал им на "полный контроль" и привилегии. Что позаботились об этой проблеме и я ушел в "Запуск от имени администратора" и бесконтрольно.
Я не'Т есть какие-либо соображения безопасности для пользователей, которые будет работать программа.
Нет, если программа требует УАК потом он пытается открыть что-то за пределами своей "песочницы". Программа не будет правильно работать без повышенных доступа.
Если вы просто хотите избавиться от уведомления, вы можете отключить UAC.
Отключить контроль учетных записей в Windows Vista: пуск, типа „пользователей" по. Нажмите на "учетные записи пользователей" по. В окне, которое появится, нажать на "Настройки учетной записи Пользователя управление" и потом отключить UAC.
Отключение UAC в Windows 7: Пуск, введите на "пользователей" по. Нажмите на "Управление учетными записями пользователей настройка и". Перетащите выбор бар все вниз, чтобы "никогда не уведомлять.&и"