Não tenho certeza se isso é realmente possível ou não, mas talvez alguém aqui tenha se deparado com o mesmo problema e encontrado uma boa maneira.
P: Como criar um script de logon que seja executado apenas uma vez para um usuário em um computador/servidor de terminal?
Um pouco de fundo: estou ciente de que, em teoria, é possível criar um script de logon que verifique se existe um arquivo em um local que o usuário pode acessar e, se esse arquivo existir, aborte o script e, no final do script de logon , crie esse arquivo. Em essência, isso faria o que eu quero, mas ainda executaria o script em cada logon, e estou curioso para saber se há uma maneira melhor.
O problema que quero resolver: quando um usuário executa o MS Teams pela primeira vez, ele define o início automático como verdadeiro e o usuário sempre inicia o MS Teams. Para um servidor de terminal em que os usuários usam equipes apenas ocasionalmente, é preferível não iniciar equipes automaticamente e permitir que o próprio usuário inicie as equipes.
Eu tenho um script que preciso executar uma vez por usuário que alterará a configuração do json para equipes e definirá o sinalizador como false. Os usuários têm discos de perfil, então não posso fazer uma varredura global para alterá-lo para todos uma vez. O script, uma vez executado, o corrigirá para sempre para esse usuário, então eu realmente só preciso executá-lo uma vez.
Existe a configuração do registro runonce para iniciar um programa uma vez. Existe um script de login equivalente que eu possa enviar pelo GPO de modo que um script de login seja executado apenas uma vez para qualquer usuário, mas não seja removido para que todos os usuários o executem uma vez?
Definir RunOnce no registro para todos os usuários pode fazer o trabalho, mas é um pouco confuso para implementar ( exemplo ).
O Windows tem um mecanismo simples para executar um comando logo no início do processo de logon, chamado Configuração Ativa. O Windows usa esse mesmo mecanismo para sua mensagem para novos usuários de "Definindo configurações personalizadas", mas também funcionará para usuários existentes.
Isso funciona pelo Windows comparando a chave de registro do Active Setup do perfil do computador (HKLM) com a cópia do perfil de usuário atual (HKCU) da subchave. Em caso de incompatibilidade, ele executa o comando indicado e, em seguida, configura o HKCU para corresponder ao HKLM, significando que não há necessidade de executá-lo novamente.
Você pode examinar se o método Active Setup atende às suas necessidades e ao seu ambiente.
Tudo o que você precisa são dois valores de registro para a instalação ativa atualizados uma vez no computador, para executar um comando para todos os logons apenas uma vez. Este exemplo será executado
notepad
:Referências:
Como a instalação ativa é executada pelo
explorer.exe
, isso cria um problema com o Terminal Server, onde o Explorer não é o shell.A Microsoft criou uma solução alternativa:
RailRunonce
. Isso é encontrado no registro emHKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RailRunonce
.O problema
RailRunonce
é que ele não faz versionamento, então a solução é acoplá-lo ao Active Setup, criando sob a chave acima um valor com um nome arbitrário que contém este comando:O processo
runonce.exe
é aquele que o Windows usa para processar aRunOnce
chave do registro. O principal ponto a ser lembrado é que a execução aqui será em paralelo e não pausará o processo do usuário.Referência: Artigo: Um mergulho profundo na configuração ativa: Parte 4 - O final ,