В Windows 7 (в моем случае это 64-битный Ultimate), есть ли способ получить только права учетной записи администратора, вместо того, чтобы эффективно "запускать" приложение как « <insert administrator name here>?

У меня возникла дилемма с MPC-HC (Media Player Classic - Домашний кинотеатр), где требуются права администратора для сопоставления файлов с ним. Когда я ввожу учетные данные для учетной записи администратора, она по существу обновляет всю среду, поэтому настройки применяются только к предоставленной мной учетной записи, а не к стандартной учетной записи, в которую я вошел. Чтобы было ясно, я сначала запускаю приложение под моей стандартной учетной записью, а затем нажимаю кнопку "Запуск от имени администратора", доступную в программе.

Я знаю, что у меня были такие же проблемы с некоторыми стандартными управляющими апплетами Windows, поэтому я не думаю, что это проблема с MPC-HC как таковой. Хотя я не могу точно вспомнить, что это было сейчас, но я в этом уверен.

Единственный обходной путь, который мне удалось найти, - временно добавить мою учетную запись в группу администраторов и быстро удалить ее, как только это будет сделано. Но это похоже на угрозу безопасности, и это также довольно неудобно, поэтому я очень надеюсь, что есть лучшее решение ...

1 ответ1

0

Люди склонны считать, что UAC в Windows ведет себя так же, как 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 и посмотрите, получится ли это где-нибудь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .