Почему мой cmd.exe в Windows 7 открывается с правами администратора? (Я не буду говорить «Запуск от имени администратора», потому что я знаю, что опция «Запуск от имени администратора» в Win7 запускает его с правами администратора, а не от имени администратора, и именно это здесь и происходит, хотя и автоматически)
Я захожу в Windows, нажимая на свое имя пользователя.
Теперь предположим, что я запускаю cmd.exe и сделаю это максимально понятным способом, чтобы показать, что я не нажимаю на ярлык.
Итак, я иду в c:\windows\system32 и запускаю cmd.exe оттуда.
Но это происходит так
И если вы думаете, что, возможно, я вошел в систему с учетной записью администратора, то это не так.
И cmd.exe, который я открыл из system32, напрямую, также показывает, что хотя он по какой-то причине запущен с правами администратора, он запущен из учетной записи пользователя.
добавлен
В ответ на некоторые вопросы комментатора "scott". У меня, очевидно, есть аккаунт под названием "user", это должно быть ясно.
Комментатор «scott» предлагает команду-
C:\Users\User>net user %username% | find "Group"
Local Group Memberships *Administrators *HomeUsers
Global Group memberships *None
C:\Users\User>
(да, учетная запись пользователя является членом группы администраторов, хотя это не привело бы к такому поведению).
комментатор "scott" предлагает мне запустить эту команду, показав вывод.
C:\Users\User>whoami /priv | find "Enabled"
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
C:\Users\User>
Ничего необычного. Если запустить cmd prompt с правами администратора на новой установке, то она покажет то же самое. Очевидно, в моем случае это происходит автоматически. Так что, возможно, комментатор scott может сказать, что он там искал?
Если вы запустите эту whoami /priv | find "Enabled"
команду из командной строки cmd, запущенной с правами администратора, на новой установке, то она также покажет те же три элемента (из локальной политики безопасности... права пользователя включены), включенные.
Так что эти команды не показывают ничего необычного, кроме того, что я уже сказал/показал.
(и что касается других вопросов от комментатора Скотта, я не в безопасном режиме, и это не новая установка, не то чтобы что-то из этого могло вызвать такое поведение в любом случае. И что касается вопроса, заданного комментатором, когда это началось. Я не знаю, когда это поведение началось.)
Также были некоторые комментарии, которые теперь исчезли. Один из них предложил установку ремонта, хотя мне интересно, какая настройка могла вызвать это.
Комментатор scott спрашивает: «Что происходит, когда вы запускаете netplwiz?» Ну, то же самое, что если нажать клавишу Windows + R (чтобы открыть старое диалоговое окно «Выполнить») и ввести control userpasswords2<ENTER>
. Появляется экран, на котором вы указываете, должен ли пользователь вводить пароль для входа в систему и какой пользователь может входить в систему автоматически.
Но все это не имеет значения. У меня есть учетная запись администратора, которая не скрыта, но я не вхожу как администратор. Как я показал с помощью, echo %username%
я вошел как 'пользователь'.
Комментатор «HelpingHand» пишет: «добавьте столбцы «Elevated» и «UAC Virtualization». Что такое состояние Elevated Explorer, родительского процесса cmd. Это «Elevated=No», «UAC Virtualization-disabled»? Может быть, сосредоточиться на родительском процессе, а не на дочернем. Я бы также запустил cmd.exe с запущенным Process Monitor. Подтвердите, что в представлении Tree View это дочерний процесс отмеченного выше процесса Explorer.exe, и проверьте операцию CreateProcess с помощью Explorer.exe для запуска cmd. В частности, стек, который вызывает CreateProcess. Было бы хорошо проверить, нет ли сторонних модулей. Может быть, вставьте снимок экрана».
В Windows 7 нет столбца "Повышенные"! Столбец Повышенные привилегии специфичен для Windows 10 (и, возможно, Win8, но кого это волнует в отношении Win8). В Win10 столбцы привязаны к вкладке и связаны со вкладкой сведений в Win10. В Win7 столбцы не привязаны к вкладке, и столбца "Повышенные" нет.
Также вы упоминаете Process Monitor, замечательную программу, но я думаю, когда вы имеете в виду дерево, вы имеете в виду Process Explorer. Process Monitor не покажет дерево процессов. Process Explorer покажет. Обе программы — отличные программы от sysinternals/Mark Russinovich, теперь доступные в MS. Когда вы упоминаете операцию (например, фильтрацию по операции), то вы имеете в виду Process Monitor. Я не вижу CreateProcess, хотя есть ThreadCreate
Взгляните на довольно свежую, обычную систему Windows 7, в которой нет этой проблемы. Process Explorer показывает, что процесс cmd.exe является дочерним процессом explorer.exe, который отображается в разделе «Explorer», и если дважды щелкнуть по нему, то будет видно, что родительский процесс — это экземпляр explorer.exe. Взгляните на различные процессы: у некоторых UAC Virtualization установлен на Allowed, у некоторых — на Disabled. У Explorer он установлен на Disabled. У cmd он установлен на Disabled.
Глядя на рассматриваемую систему Windows 7, глядя на Process Explorer, я вижу два процесса Explorer. cmd не отображается ни под одним из них. Но если я дважды щелкну cmd, то он скажет, что explorer.exe является родительским процессом. Глядя на Task Manager, ни в одном процессе UAC не отключен. Explorer установлен на «Не разрешено», а cmd установлен на «Не разрешено». Из двух процессов Explorer, один имеет командную строку с «/factory....», другой — просто обычный вызов explorer.exe. Process Explorer показывает PPID (идентификатор родительского процесса/PPID) cmd.exe, и он соответствует экземпляру explorer.exe, который просто вызывается обычным образом.
Что касается информации монитора процесса, просматривающей операцию ThreadCreate и вкладку стека, вот вставка.
Вы упомянули, что нужно рассмотреть, есть ли там сторонний модуль. Я не вижу там никаких сторонних модулей/dll или exe.
решение1
Кажется, весь вопрос основан на неверной предпосылке, что префикс «Администратор:» указывает на имя учетной записи, под которой запущен процесс. Это не так.
Но все это не имеет значения. У меня есть учетная запись администратора, которая не скрыта, но я не вхожу как администратор. Как я показал с помощью echo %username%, я вошел как 'user'.
Но все это не имеет значения. Префикс "Администратор:" на самом деле не указываетtheУчетная запись администратора – указывает привилегииаадминистратор, т.е. программа работает с полными привилегиями члена группы Администраторыгруппа.
Этот префикс добавляется Windows Conhost, поскольку обычно Windows 7 использует UAC и заставляет все интерактивные входы работать с пониженными привилегиями, несмотря на членство в группе – только «повышенные» процессы получают полные привилегии после подтверждения защищенного приглашения. Поэтому обычно вы получаете этот префикс в строке заголовка Cmd, если используете пункт меню «Запуск от имени администратора» для запуска cmd.exe с повышенными привилегиями.
Но если в системе отключен UAC,всеПроцессы, запущенные вашим «пользователем», имеют полностью привилегированный маркер безопасности, и программы всегда видят себя «запущенными от имени администратора».
Посмотрите эту другую ветку об отключении UAC и следуйте инструкциям в обратном порядке, чтобы снова включить UAC:Отключить UAC в Windows 7?