Запуск от имени администратора из командной строки в Windows 8
Я пытаюсь запустить Блокнот как администратор, чтобы я мог редактировать мой файл хостов из командной строки.
я пытался runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"
Затем я ввожу свой пароль и получаю
RUNAS ERROR: невозможно запустить - блокнот c:\windows\system32\drivers\etc\hosts 1327: ограничения учетной записи не позволяют этому пользователю войти в систему. Например: пустые слова не разрешены, время входа ограничено, или введено ограничение политики.
PS: я знаю, если я дам разрешение моей учетной записи, я могу редактировать ее, не работая от имени администратора. Но я хотел бы знать, как это сделать без изменения прав доступа к файлу hosts.
3 ответа
Хорошо, причина, по которой это не работает, это модель безопасности в Windows Vista и новее. Учетная запись в группе администраторов по-прежнему выполняет все, что явно не повышен как ограниченный пользователь. Исключением является Administrator
аккаунт, на котором работает все повышенное. По этой причине обычно считается плохим использование в качестве учетной записи и обычно отключено.
Вы можете включить его, а затем runas
призвать в качестве этой учетной записи. Это создает несколько проблем - теперь вы работаете в среде другого пользователя, в которой могут быть установлены разные переменные среды. 1
Лучшим способом сделать это было бы повышение уровня вашего текущего пользователя через UAC. К сожалению, стандартная командная строка не включает эту возможность, но это могут сделать как сторонние программы, так и встроенные PowerShell и WSHell (VBScript).
Исходя из моего другого ответа, вы можете вызвать команду PowerShell напрямую с powershell -c
:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
который в основном говорит PowerShell выполнить следующее (start
связан с Start-Process
):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Хитрость здесь в том, чтобы передать глагол runas
, вызвав UAC.
ни Start-Process -Verb runas
ни стандартный cmd runas
пропустит текущий рабочий каталог, поэтому всегда используйте полный путь в любых командах, которые вы повышаете таким образом.
Также обратите внимание, что некоторые аргументы, такие как -c
может конфликтовать с Start-Process
аргументы, поэтому самый безопасный способ это:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Примечание: это относится только к переменным среды пользователя. Переменные среды, которые вы установили в родительском процессе , не передаются UAC! Это также относится к runas
и это еще хуже, потому что вы даже не получите правильные переменные пользователя.
Скорее всего, вы еще не включили учетную запись администратора.
Вот инструкции по включению учетной записи администратора.
Вы также найдете больше информации о runas на сайте Microsoft.
Вы можете попробовать открыть командную строку с правами администратора и запустить там блокнот. Просто введите Notepad
, После того, как вы сделаете это оттуда, вы можете щелкнуть файл, затем открыть и перейти к файлу hosts и открыть его. Наконец, вы можете просто сохранить как обычно.