A melhor maneira de adicionar chaves e valores HKCU para todos os usuários existentes e todos os novos usuários?

11

Preciso adicionar chaves e valores HKCU a todas as máquinas em uma UO específica, a todos os perfis de usuário existentes e ao perfil padrão. Qual é a melhor maneira de abordar isso?

Eu poderia enumerar e iterar por todos os NTUSER.DATs, carregando a seção, adicionando as chaves e descarregando a seção, mas isso parece uma maneira desajeitada de fazê-lo.

Alguem tem uma ideia melhor? Gostaria de criar um script (de preferência do PowerShell) e enviar as alterações, se possível, mas os scripts de logon da diretiva de grupo também funcionariam.

Doug Chase
fonte
Leitura recomendada : stackoverflow.com/questions/1423687/…
Stein Åsmul
E as Preferências de Diretiva de Grupo?
Bill_Stewart

Respostas:

13

Meu método preferido é usar a Instalação Ativa. O que faz é verificar quando um usuário efetua login em uma máquina se eles executaram um script ou comando específico (como o que você teria) e, se não, executá-lo. Portanto, você só executará um script específico para um usuário uma vez em sua estação de trabalho. Achei isso perfeito para escrever no HKCU, porque você não precisa carregar cada seção, e apenas as contas nas quais as pessoas efetuam login são modificadas.

Não para me promover, mas escrevi um post sobre isso. A solução básica é a seguinte:

Adicione as seguintes entradas do Registro:

[HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\UniqueID]
"Version"=""
"Stubpath"=""
@=""
  • Você pode escolher qualquer ID exclusivo que desejar. Os GUIDs são frequentemente usados, mas você pode usar qualquer coisa que seja única.
  • Version é o número da versão que você deseja usar.
  • Stubpathé o comando que será executado. Todas as chamadas MSI, EXE e VBS parecem estar bem.
  • O @é o que deve ser exibido quando o comando está sendo executado.

Com esta solução, a linguagem de script é irrelevante. Você pode criar um arquivo VBScript, Powershell, Batch. Tudo o que permite escrever no HKCU como o usuário conectado. Usar reg.exediretamente funciona bem também.

O outro toque final opcional que você pode fazer é carregar e modificar o Hive do usuário padrão. Isso definiria o valor do registro para todos os novos usuários que fizerem logon pela primeira vez nesse sistema específico.

Rob Haupt
fonte
Eu serei amaldiçoado, isso parece perfeito. Eu nunca tinha ouvido falar do Active Setup antes. Testando agora! Obrigado.
Doug Chase
Boa resposta do 20th Century Boy também, mas o Active Setup é a solução mais simples e confiável na minha opinião. Você pode executar qualquer coisa que seja "executável".
Stein Åsmul 18/09/09
2
Como ele lida com a gravação no HKLM, especialmente quando o usuário não é um administrador? A postagem do seu blog pode realmente usar um exemplo - assim como esta postagem.
Ian Boyd
7

Você pode adicionar chaves de registro personalizadas, criando um arquivo adm personalizado e importando-o como um modelo para a seção Modelos Administrativos de um Objeto de Diretiva de Grupo. Em seguida, vincule esse GPO à sua UO. Existem documentos na MS sobre como fazer isso, ou você pode olhar para os arquivos adm que já existem no servidor (em algum lugar no Sysvol, eu acho).

Esse processo é chamado de "tatuar o registro" e significa que você está fora do controle da remoção da política de grupo, ou seja, as entradas de registro permanecerão mesmo se a política for removida. Você precisa criar uma chave de registro "invertida" e implantá-la (ou simplesmente excluí-la).

PowerApp101
fonte
Essa também é uma boa solução, e aposto que ambas as respostas funcionariam.
Doug Chase