1

Что-то ускользает от меня, когда я пытаюсь использовать runas для повышения привилегий. Простая машина Win10 с одним пользователем, который уже имеет права администратора. Мне нужно написать в определенном ключе реестра с помощью сценария, но я получаю "доступ запрещен", когда я пытаюсь с помощью команды reg напрямую.

> reg ...
ERROR: Access is denied.

Если я попробую:

> runas /user:Administrator Command
Enter the password for Administrator:
1326: The user name or password is incorrect.

Он отказывается от моего пароля пользователя. Я не думаю, что есть конкретный пароль администратора на локальной машине, верно? Там нет другого аккаунта. Попытка:

> runas /user:MyUser Command
Enter the password for MyUser:
740: The requested operation requires elevation

Так как мне повысить привилегии из командной строки?!? Почему я не вижу, что у меня есть права администратора здесь:

>runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)

РЕДАКТИРОВАТЬ: Может быть, я должен быть более ясным о том, что я хочу сделать. Из программы на C я хочу внести изменения в WT_KEY_HKLM, «Software \Microsoft \Windows \CurrentVersion \Run». Я мог бы сделать это непосредственно в XP, но в более поздних версиях Windows это не имеет никакого эффекта. И действительно, запуск "reg" для этого ключа из командной строки дает доступ запрещен. Я не хочу запускать мою программу с повышенными привилегиями, поэтому моя идея заключалась в том, чтобы сделать что-то вроде системы («runas reg ...»), где она будет запрашивать пароль и вносить изменения в реестр. Но я даже не могу заставить команду работать из командной строки. Может быть, кто-то может предложить правильный способ сделать это?

3 ответа3

1

По умолчанию учетная запись администратора заблокирована, поэтому другие не могут злоупотреблять ею. Если вы попытались использовать пустой пароль для команды «runas /user:Administrator», вы увидите, что учетная запись заблокирована.

Если у вашего пользователя уже есть права администратора, вы должны иметь доступ к команде "reg". На моей машине я умею.

К сожалению, вы не можете использовать "runas" для доступа к команде с повышенными правами; Вы должны сделать это с помощью командной строки с повышенными правами. Это можно создать с помощью команды "runas" (которая в вашем случае не будет работать) или щелкнув правой кнопкой мыши «cmd.exe» и выбрав "Запуск от имени администратора".

1

Замените [user] и [command] тем, что вы пытаетесь использовать, и попробуйте:

powershell.exe -ExecutionPolicy Bypass -command "& {Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs'}"

Плюсы:

  • Он может быть использован в неровной командной строке, окнах запуска и ярлыках окон
  • Поднимает только команду. Повышение уровня выполняется как часть выполнения команды, не выполняющей окна PowerShell.

Минусы:

  • Он всегда будет запрашивать у вас логин (нет способа сохранить учетные данные, как это можно сделать с помощью runas). - это может быть профи.
  • Если UAC включен, появится запрос UAC - это неизбежно при повышении с помощью UAC.
  • Он открывает (и закрывает) 2 окна PowerShell при обработке учетных данных и прав
  • Кавычки в команде проблематичны (или, по крайней мере, усложняются БЫСТРО). Вы захотите поместить любую команду, которой нужны кавычки, в командный файл и запустить командный файл в качестве команды.

Если вы хотите запустить эту команду из командной строки PowerShell, ее можно сократить до следующего:

Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs`'

С.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .