Получить права администратора без смены пользователя?
В Windows 7 (в моем случае это 64-битный Ultimate), есть ли способ получить только права учетной записи администратора, вместо того, чтобы эффективно "запускать" приложение как <insert administrator name here>
?
У меня возникла дилемма с MPC-HC (Media Player Classic - Домашний кинотеатр), где требуются права администратора для сопоставления файлов с ним. Когда я ввожу учетные данные для учетной записи администратора, она по существу обновляет всю среду, поэтому настройки применяются только к предоставленной мной учетной записи, а не к стандартной учетной записи, в которую я вошел. Чтобы было ясно, я сначала запускаю приложение под моей стандартной, зарегистрированной учетной записью, а затем нажимаю кнопку "Запуск от имени администратора", доступную в программе.
Я знаю, что у меня были такие же проблемы с некоторыми стандартными управляющими апплетами Windows, поэтому я не думаю, что это проблема с MPC-HC как таковой. Хотя я не могу точно вспомнить, что это было сейчас, но я в этом уверен.
Единственный обходной путь, который мне удалось найти, - временно добавить мою учетную запись в группу администраторов и быстро удалить ее, как только это будет сделано. Но это похоже на угрозу безопасности, и это также довольно неудобно, поэтому я очень надеюсь, что есть лучшее решение...
1 ответ
Люди склонны считать, что Windows UAC ведет себя так же, как sudo
в среде Unix/Linux, где ваша обычно непривилегированная учетная запись явно выполняет привилегированное действие. То, как Microsoft разработала UAC, побуждает вас так думать, но, к сожалению, это не так. Когда UAC запрашивает учетные данные, он делает неявное Run As...
и выполняет полное переключение контекста пользователя с предоставленными вами учетными данными. Учетная запись пользователя, выполняющая привилегированные действия, больше не является той, которая вызвала приглашение UAC.
В вашем случае вы говорите, что пытаетесь связать типы файлов с MPC-HC. Мне это любопытно, потому что обычные непривилегированные пользователи имеют право связывать типы файлов с приложением. Вы можете свободно ассоциировать файлы.doc для открытия в Блокноте, если хотите, и у вас не будет проблем с вашими учетными данными. Это связано с тем, что Windows ведет список сопоставлений файлов для каждого пользователя, и каждому пользователю разрешается изменять свою собственную среду таким образом, чтобы в максимально возможной степени это не влияло на других пользователей системы.
Вот как это работает:
Обычно Windows хранит ассоциации файлов в реестре по адресу HKEY_LOCAL_MACHINE\Software\Classes
, Это в кусте системного реестра. Ассоциации там глобальные и влияют на каждого пользователя машины. Вам нужны повышенные разрешения для изменения большинства данных в нем.
Если пользователь переопределяет ассоциацию (или создает новую), Windows записывает ее в HKEY_CURRENT_USER\Software\Classes
, Это куст реестра пользователя. Каждый пользователь имеет свой собственный куст HKCU и имеет право свободно изменять свою собственную копию.
Windows объединяет два улья в одно виртуальное дерево HKEY_CLASSES_ROOT
, который существует только в памяти и не является реальным кустом реестра. Когда возникает конфликт (т. Е. Одна и та же связь записана в обоих местах), копия пользователя имеет приоритет.
Теперь, когда вы пытаетесь изменить ассоциации файлов и MPC-HC запрашивает учетные данные, это говорит о том, что происходит одно из двух:
Или
- MPC-HC вносит изменения в ключ \Software\Classes в
HKEY_LOCAL_MACHINE
и требует повышенных полномочий для этого.
Или же
- MPC-HC ошибочно запрашивает учетные данные, потому что считает, что это необходимо, а разработчик не понимал, как работает UAC. Вы будете удивлены, как часто якобы "умные" люди ошибаются.
В первом случае MPC-HC успешно обновляет сопоставление файлов в кусте HKLM, но ваша учетная запись пользователя перезаписала его в вашем кусте HKCU. Это объясняет, почему это не имеет значения. Исправление - удалить эту связь из реестра. ПРИМЕЧАНИЕ: если вы запускаете regedit
, вы получите приглашение UAC. Не используйте учетные данные своей учетной записи администратора. Если вы это сделаете, куст HKEY_CURRENT_USERS, который вы видите, будет принадлежать учетной записи администратора, а не вашей. Вместо этого используйте учетные данные своей непривилегированной учетной записи. Они будут работать
Во втором случае MPC-HC, вероятно, просто обновляет ассоциацию в HKEY_CLASSES_ROOT
и жестко запрограммирован, чтобы запросить повышение прав, потому что 99% времени, он перенаправляет на HKLM
(который требует возвышения), а не HKCU
, Если это так, попробуйте указать свои собственные учетные данные в приглашении UAC и посмотрите, получится ли это где-нибудь.