У меня здесь странная проблема. Я пытаюсь отключить UAC через командную строку (командный файл) и с помощью REG.EXE (поскольку он сам не запрашивает доступ к UAC). Мне удалось создать ярлык (.lnk) с целью:
C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
Если я запустил это как администратор - никаких проблем нет, это меняет реестр. Если я попытаюсь запустить эту команду через саму командную строку (от имени того же администратора), я получу в доступе отказано.
В конце концов, я хочу переместить его в пакетный сценарий, но это не должно быть проблемой, когда я смогу запустить его из командной строки. Любые идеи? Спасибо.
Тот факт, что он не запрашивает эскалацию UAC, не означает, что он ему не нужен.
Это нужно.
Вам нужно будет запустить его из расширенного контекста - расширенной командной строки, запланированной задачи с установленным флажком «Запуск с наивысшими привилегиями» и т. Д. Реестр просто не может быть изменен без повышения привилегий.
Для этого вам нужен повышенный контекст. Я слишком много искал задачу, которая мне была нужна, и не мог найти способ запросить повышение прав из приглашения в пакетном файле.
Однако вопреки тому, что Shane Madden
упоминал в комментариях к предыдущему ответу, я использую Prio от prnwatch.com с незапамятных времен, чтобы выполнять автоматическое тихое повышение определенных процессов. Естественно, вы не можете рассчитывать на это, если вы будете распространять свой командный файл для запуска на других компьютерах ....