As pessoas têm a tendência de pensar que o UAC do Windows se comporta da mesma maneira que o sudo
em um ambiente Unix / Linux, em que sua conta de usuário normalmente sem privilégios está executando explicitamente uma ação privilegiada. A maneira como a Microsoft projetou o UAC encoraja você a pensar dessa maneira, mas, infelizmente, esse não é o caso. Quando o UAC solicita credenciais, ele está fazendo um Run As...
implícito e executa uma alternância de contexto de usuário completa com as credenciais fornecidas. A conta de usuário fazendo a coisa privilegiada não é mais aquela que invocou o prompt do UAC.
No seu caso, você diz que está tentando associar tipos de arquivo ao MPC-HC. Isso é curioso para mim, porque usuários normais e sem privilégios têm o direito de associar tipos de arquivos a um aplicativo. Você poderia associar livremente arquivos .doc para abrir no bloco de notas, se quisesse, e você não teria suas credenciais desafiadas a fazê-lo. Isso ocorre porque o Windows mantém uma lista de associações de arquivos por usuário, e cada usuário tem permissão para modificar seu próprio ambiente de forma que, na máxima extensão possível, isso não afete outros usuários do sistema.
Veja como isso funciona:
Normalmente, o Windows armazena associações de arquivos no registro em HKEY_LOCAL_MACHINE\Software\Classes
. Isso está na seção do registro do sistema. As associações lá são globais e afetam todos os usuários da máquina. Você precisa de permissões elevadas para modificar a maioria dos dados.
Se um usuário substituir uma associação (ou criar uma nova), o Windows a registrará em HKEY_CURRENT_USER\Software\Classes
. Esta é a seção de registro do usuário. Cada usuário tem sua própria seção HKCU e tem permissões para modificar livremente sua própria cópia.
O Windows combina as duas seções em uma única árvore virtual em HKEY_CLASSES_ROOT
, que existe apenas na memória e não é uma seção real do Registro. Quando um conflito surge (ou seja, a mesma associação é registrada em ambos os locais), a cópia do usuário tem precedência.
Agora, quando você tenta alterar associações de arquivos e o MPC-HC solicita credenciais, isso indica que uma de duas coisas está acontecendo:
Ou
- O MPC-HC está fazendo alterações na chave \ Software \ Classes em
HKEY_LOCAL_MACHINE
e precisa de credenciais elevadas para fazer isso.
Ou
- O MPC-HC está pedindo erroneamente as credenciais porque acha que ele precisa, e o desenvolvedor não entendeu como o UAC funciona. Você ficaria surpreso com a frequência com que pessoas supostamente "inteligentes" entendem isso errado.
No primeiro caso, o MPC-HC está atualizando com êxito a associação de arquivos na seção HKLM, mas sua conta de usuário a substituiu na seção HKCU. Isso explicaria por que não aparece para fazer a diferença. A correção é excluir essa associação do registro. OBSERVAÇÃO: Se você iniciar regedit
, receberá um prompt do UAC. Não use as credenciais da sua conta de administrador. Se você fizer isso, o grupo HKEY_CURRENT_USERS que você vê será o da conta do administrador, não o seu. Use suas próprias credenciais da conta não privilegiada. Eles funcionarão .
No segundo caso, o MPC-HC provavelmente está apenas atualizando a associação em HKEY_CLASSES_ROOT
e é codificado para solicitar a elevação porque 99% do tempo, ele redireciona para HKLM
(que precisa de elevação) em vez de %código%. Se este for o caso, tente fornecer suas próprias credenciais no prompt do UAC e veja se ele leva você a algum lugar.