Eu tenho dois perfis de usuário no meu PC com Windows 10, um perfil de desenvolvedor e um perfil normal. No perfil do desenvolvedor, executei um .reg
arquivo para adicionar um item de menu de contexto que abre uma instância do Windows Terminal com um prompt do Git Bash ativo.
Para minha surpresa, o menu de contexto no outro perfil do Windows também mostrava a nova opção de menu, mas quando clicado, mostrava um erro que dizia não poder acessar o caminho ou arquivo especificado. Isso ocorre porque não tenho o Windows Terminal instalado no perfil normal. E excluir as chaves de registro em questão no perfil normal também remove o item de menu do menu de contexto no perfil do desenvolvedor.
O mesmo registro do Windows está sendo compartilhado entre os dois perfis e está causando isso? Em caso afirmativo, como posso ter um registro separado para cada perfil de usuário?
Arquivo Reg:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal]
@="Open Windows Terminal Here"
"Icon"="%USERPROFILE%\\AppData\\Local\\WTerminal\\terminal.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal\command]
@="wt new-tab --profile \"Git Bash\" --startingDirectory ."
Sim e não.
HKEY_LOCAL_MACHINE
é compartilhado;HKEY_CURRENT_USER
é privado por usuário.Enquanto isso, HKEY_CLASSES_ROOT é uma árvore virtual que, na verdade, é uma visão mesclada tanto por usuário
HKCU\Software\Classes
quanto porHKLM\Software\Classes
árvores. (É uma sobra do Windows 9x, que não tinha a separação.)As gravações feitas no HKCR irão para o registro pessoal ou do sistema, dependendo de seus privilégios e se a chave que está sendo atualizada foi originalmente carregada de HKCU ou HKLM.
Para ter associações de arquivos por usuário, coloque-as em
HKEY_CURRENT_USER\Software\Classes
vez de usar HKEY_CLASSES_ROOT. Da mesma forma, para criar os de todo o sistema, coloque-os em HKLM.Sim, há um único registro O registro tem várias colméias reais e várias colméias "virtuais". Duas das colmeias reais mais importantes são
HKEY_LOCAL_MACHINE
eHKEY_USERS
. Como o último implica, ele contém valores para vários usuários.Agora
HKEY_CURRENT_USER
é um mapeamento virtual de umaHKEY_USERS
subchave, grosso modo a chave do usuário que iniciou o processo. Assim, processos diferentes podem terHKEY_CURRENT_USER
mapeamentos diferentes. Da mesma forma,HKEY_CLASSES_ROOT
também é uma visão virtual, formada pela fusãoHKEY_LOCAL_MACHINE
e essaHKEY_USERS
subchave.O registro oferece suporte a listas de controle de acesso (ACLs), portanto, talvez você não consiga ver as chaves de outros usuários.