Запуск от имени администратора из командной строки в Windows 8

11

Я пытаюсь запустить Блокнот как администратор, чтобы я мог редактировать свой файл хостов из командной строки.

Я попытался runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"я тогда ввел свой пароль, и я получаю

RUNAS ERROR: невозможно запустить - блокнот c: \ windows \ system32 \ drivers \ etc \ hosts 1327: ограничения учетной записи не позволяют этому пользователю войти в систему. Например: пустые слова не разрешены, время входа ограничено, или введено ограничение политики.

PS: я знаю, что если я дам разрешение моей учетной записи, я могу редактировать ее без участия администратора. Но я хотел бы знать, как это сделать, не меняя разрешения для файла hosts.

Кирилл Фукс
источник

Ответы:

7

Хорошо, причина , по которой это не работает, это модель безопасности в 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 Примечание: это относится только к пользовательскому переменному окружению «s. Переменные окружения, которые вы установили в родительском процессе , не передаются UAC ! Это также относится к runas, и это еще хуже там, потому что вы даже не получите правильные переменные пользователя.

боб
источник
У меня не получилось с двойными кавычками.
Винс
@ Ghodmode Не могли бы вы привести пример линии, которую вы пытались запустить? Если вы ссылаетесь на последний пример, попробуйте переместить первую цитату после -c. (так -c "startвместо "-c start)
Боб
Обратите внимание, что процесс powershell не нужно запускать с повышенными правами, чтобы запустить программу от имени администратора.
jiggunjer
Странно, что он работал до обновления Windows 10 2019-03.
Qwerty
12

Скорее всего, вы еще не включили учетную запись администратора.

Вот инструкции по включению учетной записи администратора .

Вы также найдете больше информации о runas на сайте Microsoft.

Николь Гамильтон
источник
Мой администратор перестал работать после обновления Windows 10 2019-03, эта команда исправила этоnet user administrator /active:yes
Qwerty
-1

Можно попробовать открыть командную строку с правами администратора и запустить там блокнот. Просто введите Notepad. После того, как вы сделаете это оттуда, вы можете щелкнуть файл, затем открыть и перейти к файлу hosts и открыть его. Наконец, вы можете просто сохранить как обычно.

TylerDaNerd
источник