Я пытаюсь выполнить отладку для поставщика на машине с Windows 7. Мне нужно запустить, netsh
чтобы задать параметр. Я пытался запустить его из окна cygwin/shell, но получаю ошибку «Запуск от имени администратора».
Погуглив, я вижу, что есть runas
команда, которая, кажется, работает как sudo
. Поскольку моя учетная запись пользователя ( me
) является администратором, я пробую runas /user:me "netsh ..."
я получаю запрос на me
пароль ; я ввожу его; netsh
(предположительно, запущенный в новом cmd
окне) мигает, открывается и закрывается; и я получаю успешный ответ от команды (т. е. $? == 0).
Но, видимо, этого недостаточно, поскольку параметр не изменился. В конце концов я обошел это, выполнив "запуск от имени администратора" на ярлыке оболочки (и затем запустился netsh
нормально).
В чем трюк, позволяющий Windows/ runas
понять, что me
вы действительно являетесь администратором?
решение1
Существует разница между входом в учетную запись, входящую в группу администраторов, и работой (а) с повышенными привилегиями или (б) в качестве встроенной учетной записи администратора.
Всякий раз, когда вы работаете как Администратор, вы всегда повышены — по определению. Так что если вы run /user:administrator
это окно будет повышено при открытии, вы НЕ получите запрос UAC, и netsh
команда должна быть запущена.
Но поскольку встроенная учетная запись администратора всегда работает с повышенными правами и не генерирует запросы UAC runas
, это представляет угрозу безопасности, особенно если у нее нет пароля. Вот почемуMicrosoft отключает учетную запись администратора по умолчаниюи требует, чтобы вы сначала включили его:
В Windows® 7 встроенная учетная запись администратора отключена по умолчанию. В предыдущих версиях Windows учетная запись администратора автоматически создавалась во время Out-of-Box-Experience (OOBE) с пустым паролем.
Учетная запись администратора с пустым паролем представляет собой риск для безопасности. Для лучшей защиты системы встроенная учетная запись администратора по умолчанию отключена во всех чистых установках и обновлениях Windows 7.
Вот как это включить. (Вы можете открыть MMC, введя «mmc» в поле «Выполнить...» в меню «Пуск».)
Измените свойства учетной записи администратора с помощью консоли управления локальными пользователями и группами Microsoft (MMC).
- Откройте консоль MMC и выберите Локальные пользователи и группы.
- Щелкните правой кнопкой мыши учетную запись администратора и выберите «Свойства».
- Откроется окно «Свойства администратора».
- На вкладке Общие снимите флажок Учетная запись отключена.
- Закройте консоль MMC.
Также имейте в виду, что runas
НЕ позволяет передавать аргументы в запускаемую вами программу:
RUNAS USAGE:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<UserName>] program
RUNAS /trustlevel:<TrustLevel> program
Если вы хотите запустить команду с повышенными правами под своим собственным идентификатором пользователя или хотите передать аргументы, вам понадобится настоящий sudo
или su
(например,Вот этот, часть моего собственногоКорпус Hamilton C:) с интермедиейотмечено в манифесте приложениякак требующие повышения. Если вы сделаете это таким образом, вы увидите запрос UAC.