Повышение: получение токена администратора в учетной записи администратора по сравнению со стандартными учетными записями в Windows
Недавно меня смутило то, как UAC работает между стандартными учетными записями и учетными записями администратора,
Как все мы знаем, когда UAC включен, UAC позволяет стандартным учетным записям или учетным записям администраторов в режиме одобрения администратором получать доступ к токену администратора для выполнения задач, требующих административного доступа к компьютеру, что позволяет нам переключать токены без переключения пользователей.,
Однако, похоже, что переключение токенов не совсем то, что происходит: некоторое время назад я запустил приложение, которое модифицировало бы оболочку (explorer.exe). Я запустил программу со стандартной учетной записью, но для нее требовался повышенный доступ: поэтому я использовал UAC для предоставления учетных данных администратора, чтобы она могла завершиться. Я не видел никаких изменений в оболочке; Затем я вошел в учетную запись администратора, чьи учетные данные я использовал, и увидел, что оболочка в этой учетной записи была изменена, что, очевидно, было не тем, что я хотел
Мне казалось, что UAC был просто соглашением типа "Запуск от имени пользователя", когда он фактически запускал программу от имени этого пользователя. Это означало, что я не просто запускал его с повышенными правами: я буквально запускал программу от имени этого пользователя,
У меня вопрос: возможно ли для стандартной учетной записи использовать маркер администратора, но на самом деле запустить программу от имени обычного пользователя и использовать профиль текущего пользователя? В противном случае, мне кажется, что если вам нужно выполнить какие-либо задачи администратора, вам в значительной степени необходимо войти в учетную запись администратора, которая наносит ущерб всей цели UAC - поскольку UAC запускает программу в качестве администратора, а не использует только права администратора,
Возможно ли разделение токена и профиля? Или все пользователи просто должны быть администраторами в этом случае? Мне кажется, что это будет причиной многих организаций, просто предоставляя полный доступ администратора всем пользователям,
Может кто-нибудь, пожалуйста, пролить свет на это?
Я хотел бы знать, было бы возможно предоставить токен администратора для указанной программы, но запустить эту программу в текущей учетной записи пользователя, а не в учетной записи администратора, чьи учетные данные были предоставлены - другими словами, будет ли он иметь Можно было изменить оболочку в учетной записи Standard с этой программой? Цель состоит в том, чтобы запустить процесс как зарегистрированный пользователь (независимо от текущих привилегий) с правами администратора, а не как процесс с учетной записью с правами администратора.
Надеюсь, это имеет смысл,
ПОЯСНЕНИЕ: я не имею в виду режим одобрения администратором или работу UAC. Я уже знаю, что если для UAC задано безопасное значение, даже администраторам будет предложено и, если оно не отключено, администраторы по умолчанию используют стандартный токен. Я говорю о том, что когда получен токен администратора, возможно ли продолжать процесс как зарегистрированный пользователь, только с токеном администратора? (не использовать Run As 'user', но, возможно, что-то вроде запуска от имени / с 'token') и т. д. Таким образом, он будет использовать общие административные привилегии, а не административные привилегии одного пользователя.
Это вообще возможно, или я только что указал на функцию не в Window?
Должен ли я для достижения цели, описанной здесь, возможно, превращать стандартную учетную запись в учетную запись администратора в любое время, когда необходимо выполнить какие-либо действия, требующие повышения прав, а затем снова превратить ее в стандартную учетную запись? Судя по комментариям, кажется, что это невозможно, и это кажется недостатком ОС, поскольку делает UAC в основном бесполезным.
ПРИМЕР: Несколько лет назад я пытался запустить программу, которая изменила бы тему моего компьютера, необходимую для исправления системы (одна из этих сторонних программ). Требуются права администратора. Я не увидел никаких изменений, но затем я вошел в учетную запись администратора, чей пароль я использовал, и обнаружил, что все действия были применены к этой учетной записи!! Мне приходилось возиться с этим несколько раз, чтобы заставить его работать, но это был действительно неудачный процесс. Будет ли самое простое решение - просто временно продвинуть эту стандартную учетную запись администратору, а затем понизить ее?
2 ответа
Вы не можете иметь программу, работающую под стандартной учетной записью, но с правами администратора.
Вы ошибаетесь, что UAC - это "Запуск от имени другого пользователя". Программы, работающие под именем пользователя Admin, по умолчанию работают со стандартными разрешениями. Только когда программа "повышена", она получает права администратора. Это даже если ваша учетная запись является администратором.
UAC был создан для решения проблемы, связанной с тем, что все процессы, запущенные под пользователем с правами администратора, имеют права администратора.
Да, это возможно...
Откройте консоль и введите "runas
"
use the /profile switch to select a profile to run the program...
use the /savecred switch to save the admin credentials you choose...
...
RUNAS USAGE:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<UserName>] program
RUNAS /trustlevel:<TrustLevel> program
/noprofile specifies that the user's profile should not be loaded.
This causes the application to load more quickly, but
can cause some applications to malfunction.
/profile specifies that the user's profile should be loaded.
This is the default.
/env to use current environment instead of user's.
/netonly use if the credentials specified are for remote
access only.
/savecred to use credentials previously saved by the user.
This option is not available on Windows 7 Home or Windows 7 Starter Editions
and will be ignored.
/smartcard use if the credentials are to be supplied from a
smartcard.
/user <UserName> should be in form USER@DOMAIN or DOMAIN\USER
/showtrustlevels displays the trust levels that can be used as arguments
to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
in /showtrustlevels.
program command line for EXE. See below for examples
Examples:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
NOTE: Enter user's password only when prompted.
NOTE: /profile is not compatible with /netonly.
NOTE: /savecred is not compatible with /smartcard.