Script de Diretiva de Grupo para adicionar / atualizar chave de registro HKCU durante o desligamento

2

Existem algumas maneiras de adicionar ou atualizar uma chave no registro HKCU. Existem algumas maneiras de modificar uma estação de trabalho com diretivas de grupo. Eu tentei alguns destes, e eu poderia usar alguma ajuda.

Eu tenho um conjunto de quatro cscripts que eu compilo para executar com o VBSEditor da Adersoft.

Esses scripts compilados são executados muito bem e são mais rápidos do que executar um script .vbs.

Eu tenho um script para inicialização, logon, logoff e desligamento. Atualmente, esses scripts acessam os compartilhamentos de arquivos do servidor SQL e do servidor (somente logon e logoff), lêem o registro local e executam alguns comandos através do objeto wscript.shell. Tudo isso funciona como esperado, dentro dos limites que as tarefas que exigem privilégios administrativos devem ser executadas durante o desligamento / inicialização e as tarefas que exigem acesso à rede (compartilhamentos de arquivos e sql server) devem ser executadas durante o logon e logoff.

Meu problema ocorre ao tentar criar e / ou modificar uma chave de registro no HKCU. Eu posso ler as chaves bem, e meus scripts funcionam quando executados a partir de uma sessão de login de administrador, mas eles não fazem nada quando são executados durante a inicialização, desligamento, logon ou logoff do GPO.

Devido à minha falta de experiência, não conheço a maioria das peculiaridades do ambiente em que os scripts da Diretiva de Grupo devem ser executados.

Aqui está um conjunto de comandos que funciona no console, mas falha no GPO:

set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
oRegistry.CreateKey HKEY_CURRENT_USER, strKeyPath
oRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,drtval

E aqui está um método alternativo:

strKeyPath = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
strKP = strKeyPath + "\" + strValueName
o=wshShell.RegWrite(strKP, drtval, "REG_DWORD")

drtval é 0 ou 1, dependendo de eu ativar ou desativar as ferramentas de registro.

Alguém pode ver o que estou fazendo errado?

A estação de trabalho em particular que estou testando é um XP Pro. Eu tenho cerca de 100 desses filhotes para gerenciar via GPO.

Qualquer ajuda seria apreciada.

    
por Timbo 08.11.2014 / 01:15

1 resposta

0

Depois de muito teste e tentativa e erro, aprendi o seguinte:

Às vezes, é o caso de uma chave de registro que normalmente é criada em HKCU também pode ser criada no HKLM.

Todos os exemplos que encontrei com o google apontam para modificar a chave HKCU para essa chave.

Isso funciona na sessão atual, no regedit ou via scripts, e após uma reinicialização, a alteração é efetuada.

Mas usando esse script no script de encerramento da política de grupo, ele falha.

Agarrando palhas, mudei a colmeia no comando de script do GPO para HKLM e voila .. Funciona.

Eu não sei exatamente por quê, talvez um "superusuário" possa explicar isso para nós, mas eu nunca encontrei isso documentado dessa forma, e espero que ajude alguém a evitar alguns dias de puxar o cabelo.

Corrigido para uso no script de encerramento da política de grupo:

set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
strValueName = "NoControlPanel"
oRegistry.CreateKey HKEY_LOCAL_MACHINE, strKeyPath
oRegistry.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,drtval
    
por 13.11.2014 / 23:19