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