Получить права администратора без смены пользователя?

В 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 и посмотрите, получится ли это где-нибудь.

Другие вопросы по тегам