Ao utilizar um script de startup ou logout para desconectar sessões de usuários no Windows, alguns usuários enfrentam o seguinte erro:
Session not found
Esse problema geralmente ocorre quando o nome de usuário contém espaços, como em: USER NAME
Nesses casos, o comando query user
não consegue localizar corretamente a sessão do usuário, impedindo a execução do script de forma esperada.
Para contornar o problema causado pelo espaço no nome de usuário, utilize a variável como coringa %User*Name%
em vez de %USERNAME%
diretamente.
Isso permite capturar corretamente a sessão mesmo quando o nome do usuário possui espaços.
for /f "skip=1 tokens=3" %%s in ('query user %User*Name%') do (%windir%\System32\tscon.exe %%s /dest:console)
Esse script executa os seguintes passos:
Query user busca a sessão do usuário atual com wildcard.
O comando tscon
desconecta a sessão e a redireciona para o console.
O for /f
com "skip=1 tokens=3"
serve para extrair o ID da sessão da saída do query user
.
O uso de %User*Name%
garante maior compatibilidade com nomes de usuário que contêm espaços ou outros caracteres especiais.
Se o seu script de desconexão não funciona devido a um erro de "Session not found", e o nome do usuário contém espaços, substitua %USERNAME%
por %User*Name%
.
Essa simples alteração garante que o script funcione corretamente mesmo com nomes compostos.