Отключение UAC программным способом

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

Обновлять:

Я ищу что-то в соответствии с тем, что упомянул Kosi2801, в основном, чтобы попросить пользователя всегда запускать программу в «повышенном» режиме. Я бы хотел, чтобы разрешение было разовым, я не говорю, что я программно отключаю UAC, не спрашивая предварительно разрешения. Я уверен, что есть много программ, которые должны работать в этом режиме (особенно программ, связанных с оборудованием), поэтому должен быть какой-то способ приспособить его.


person Abdullah Jibaly    schedule 25.03.2009    source источник
comment
Правильное решение - установить службу, которая будет выполнять задачи на уровне администратора от вашего имени.   -  person Harry Johnston    schedule 09.05.2014
comment
Я создал сервисное приложение для отключения UAC, взгляните на мой ответ.   -  person Zach Leighton    schedule 14.05.2015
comment
Если вы умеете программировать на C #, вам может помочь stackoverflow.com/questions/682182 /   -  person Sami    schedule 15.08.2016
comment
UAC - это предпочтение пользователя; не твое. Вы также должны учитывать, что отключение UAC не решает вашу проблему. Когда пользователь является стандартным пользователем, программа по-прежнему не запускается с правами администратора. Вы должны спросить себя: что бы вы делали в Windows XP? Пользователь обычный пользователь, с этим надо правильно разобраться.   -  person Ian Boyd    schedule 25.09.2018


Ответы (8)


Установите для параметра EnableLUA DWORD в HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System значение 0 и перезагрузитесь.

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

получайте удовольствие от моего трюка с реестром :)

работает и в win7, дайте мне знать, как вы с ним поладили.

person Erx_VB.NExT.Coder    schedule 29.07.2010
comment
На самом деле UAC сломан по-разному. Я понимаю, почему некоторые, в остальном правильные, программы будут довольно эффектно давать сбой при включенном UAC. - person Joshua; 29.07.2010
comment
+1 за уловку, но позволит ли UAC изменить значение реестра в HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System без предупреждения пользователя о принимающей стороне? - person Omair Iqbal; 07.08.2010
comment
ну, пока вы запускаете программу (exe) под администратором (то есть человек, запускающий приложение, согласился запускать его от имени администратора), вы действительно можете выполнить трюк с реестром без каких-либо сообщений пользователю, в VISTA, в Win7 вы все еще может это сделать, но пользователь получит уведомление о том, что «вам необходимо перезагрузить компьютер, чтобы UAC вступил в силу» - это не прерывает процесс, а просто подразумевает для пользователя, что отключение произошло ... но если вы хотите, вы также можете отключить это сообщение с помощью другого трюка с реестром :), так что оно всегда «работает», пока работает от имени администратора. - person Erx_VB.NExT.Coder; 11.08.2010
comment
Я также предлагаю вам отметить это как ответ, так как все остальные ответы, по моему мнению, были полностью дезинформированы - person Erx_VB.NExT.Coder; 11.08.2010
comment
Отключить UAC глобально для всего компьютера, чтобы решить одну (которую можно избежать) проблему для одного приложения? Почему бы просто не удалить все антивирусные сканеры, потому что они слишком часто вас предупреждают? Я считаю, что снижение уровня безопасности для повышения удобства использования никогда не является решением. - person Kosi2801; 12.08.2010
comment
Я думаю, что это технически правильный ответ, однако я бы не рекомендовал никому использовать этот подход, поскольку он в значительной степени противоречит цели UAC, как заявлено здесь другими. Это может быть нормально, если вы делаете это в своей / внутренней / корпоративной среде ... - person Abdullah Jibaly; 29.11.2010
comment
Спасибо, да, я согласен, это крайний вариант. - person Erx_VB.NExT.Coder; 30.11.2010
comment
Да, он работает, просто избегая диалогового окна, но если у пользователя есть права администратора, потребовалось Да, в противном случае Нет по умолчанию - person Singaravelan; 02.07.2014
comment
Вам не хватает 3 других разделов реестра, которые необходимо настроить. - person Zach Leighton; 14.05.2015

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

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

Для этого вам нужно создать файл манифеста и установить <requestedExecutionLevel level="requireAdministrator">

Подробнее см. в MSDN.

person Reed Copsey    schedule 25.03.2009
comment
Привет, Рид, я делаю установщик (с указанными выше разрешениями), который запускает ServiceModelReg.exe, но он заканчивается ошибкой ... при запуске с ручным повышением разрешений с панели управления ... все работает нормально - person taher chhabrawala; 30.07.2010
comment
прочтите мой ответ, вы можете отключить UAC, если вы работаете с правами администратора! - person Erx_VB.NExT.Coder; 11.08.2010
comment
@ Erx_VB.NExT.Coder: Тем не менее, это вызывает перезагрузку. Я бы назвал это не программным изменением, а изменением конфигурации. Это действительно не помогает, поскольку в этом случае пользователь может просто изменить конфигурацию системы. - person Reed Copsey; 11.08.2010
comment
Меня просто раздражает, что все говорят, что отключить UAC невозможно, хотя на самом деле это совсем не так. Дезинформация - это проблема. Вы можете отключить uac с помощью реестра, если вы находитесь в режиме администратора или в режиме с повышенными привилегиями, каковыми являются большинство запущенных приложений. - person Erx_VB.NExT.Coder; 29.11.2010
comment
@ Erx_VB.NExT.Coder: вы можете сделать это (при условии, что у вас есть повышенные права) для всей учетной записи пользователя, но не для конкретной операции / процесса. Также требуются повышенные разрешения (например, приглашение UAC), чтобы делать ... - person Reed Copsey; 29.11.2010

Цель UAC - предотвратить выполнение нежелательных приложений. Если бы можно было отключить его программно, это было бы бесполезно.

person jkottnauer    schedule 25.03.2009
comment
ну, это возможно, если вы работаете как админ. - person Erx_VB.NExT.Coder; 11.08.2010

Я разместил здесь несколько гранулярное (но уродливое) решение

http://stackoverflow.com/questions/5344021/bypass-uac-in-vbscript/34445992#34445992

Это работает, только если вы можете запустить приложение из планировщика задач. У меня он работает на двух ноутбуках с Windows 7. Это административное решение. Для его реализации вам потребуются права администратора. Я использую его для PowerShell и для приложения резервного питания ИБП. Я подозреваю, что найду другие применения.

person namrokretep    schedule 25.12.2015
comment
Есть ли какая-то особая причина для отрицательного рейтинга? Мое решение отключает UAC способом, который нигде больше не публиковался. Это проблема, которую я пытался решить 3 года. Решение работает. - person namrokretep; 26.12.2015

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

Пример C #:

Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System","EnableLUA", 0);

Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", "ConsentPromptBehaviorAdmin", 0);

Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", "PromptOnSecureDesktop", 0);

Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Action Center\\Checks\\{C8E6F269-B90A-4053-A3BE-499AFCEC98C4}.check.0", "CheckSetting", StringToByteArray("23004100430042006C006F00620000000000000000000000010000000000000000000000"), RegistryValueKind.Binary);

Мое приложение запускается как служба каждые 5 минут, чтобы «бороться» с групповой политикой по этому поводу, что является абсолютным раздражением для машины разработчика.

https://github.com/zleight1/DisableUAC

person Zach Leighton    schedule 14.05.2015

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

Вам может потребоваться запустить ваше приложение под учетной записью администратора или (я думаю) позволить Microsoft каким-то образом подписать ваше приложение.

Могут быть другие способы, о которых я не знаю, но ни один из них не является программным!

person Kosi2801    schedule 25.03.2009
comment
конечно, вы можете отключить UAC и любое сопутствующее сообщение, связанное с ним, если вы запускаете программу с правами администратора! - person Erx_VB.NExT.Coder; 11.08.2010
comment
Поскольку вопрос был связан с тем, что в настоящее время приложение запускается ограниченным способом, это было бы невозможно в этих условиях. Конечно, как я уже сказал, требование, чтобы он запускался с правами администратора, помогло бы. И поскольку это не должно происходить вручную каждый раз, ответ по-прежнему актуален. Итак, принятый ответ, как автоматически запускать повышенный режим, выбран правильно. - person Kosi2801; 12.08.2010
comment
Я считаю, что мой ответ был обновлен как правильный ответ, который был выбран правильно, когда они спросили, как избавиться от проблемы с uac, и вот что он делает. В крайнем случае я согласен, но это точно. Он изменил принятый ответ на мой ответ. - person Erx_VB.NExT.Coder; 25.12.2010

UAC - неизбежное зло, как и использование семафоров в городе. Предлагаю адаптироваться к новой парадигме. Мне лично не нравится UAC; но я понимаю цель и преимущества. К сожалению, мы все создали этого монстра. Не вернемся в 1983 год, сделаем краткую оценку изменений за прошедшие годы, и тогда мы поймем. Конечно, если намерение предназначено для частного использования, все возможно, как указано выше; но это было бы рискованно и стало бы обузой черной дыры.

person Gonzalo Aguilera    schedule 10.10.2012

Это победит объект UAC. Так что нет, ты не можешь.

person blowdart    schedule 25.03.2009
comment
Потому что, если он может, нет смысла иметь это. - person sɐunıɔןɐqɐp; 30.01.2021