SessionView
Uma aplicação de console leve em C# para enumerar e exibir todas as sessões de usuário no Windows Server, incluindo GUIDs de sessão.
Recursos
- Enumeração Completa de Sessões: Lista todas as sessões ativas no servidor Windows
- Informações Detalhadas da Sessão: Exibe ID da Sessão, Nome da Estação, Estado da Conexão, Nome de Usuário e Domínio
- Recuperação de GUID da Sessão: Extrai o identificador GUID exclusivo de cada sessão do registro do Windows
- Detecção do Estado da Conexão: Mostra se as sessões estão Ativas, Desconectadas, Ociosas, etc.
- Saída de Console Limpa: Saída formatada de fácil leitura para análise rápida de sessões
Requisitos
- Windows Server (2012 R2 ou posterior) ou Windows Client (Windows 10/11)
- .NET Framework 4.7.2+
- Privilégios de administrador (necessários para acessar informações da sessão e o registro)
Instalação
Opção 1: Compilar a partir do código-fonte
- Clone ou baixe o repositório
- Abra a solução no Visual Studio 2019 ou posterior
- Compile a solução (Ctrl+Shift+B)
- O executável estará localizado em
bin\Debug ou bin\Release
Opção 2: Compilação pela linha de comando
Usando MSBuild (Prompt de Comando do Desenvolvedor para Visual Studio)
msbuild SessionView.csproj /p:Configuration=Release
Ou usando CSC diretamente
csc /out:SessionView.exe /platform:anycpu Program.cs
Uso
- Execute como Administrador: Esta ferramenta precisa de um token elevado
- O aplicativo enumerará automaticamente todas as sessões e exibirá as informações
Exemplo de Saída
=== Windows Server Session Enumerator ===
Found 3 session(s)
Session 1:
Session ID: 0
Station Name: Services
State: WTSDisconnected
Username: (No user logged in)
Session GUID: (Not available)
Session 2:
Session ID: 1
Station Name: Console
State: WTSActive
Username: Administrator
Domain: MYSERVER
Session GUID: {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
Session 3:
Session ID: 2
Station Name: RDP-Tcp#1
State: WTSDisconnected
Username: JohnDoe
Domain: COMPANY
Session GUID: {B2C3D4E5-F6A7-8901-BCDE-F12345678901}
Press any key to exit...
Estados da Sessão
O aplicativo pode exibir os seguintes estados de conexão:
- WTSActive: O usuário está usando ativamente a sessão
- WTSConnected: A sessão está conectada
- WTSDisconnected: A sessão está desconectada, mas ainda em execução
- WTSIdle: A sessão está ociosa
- WTSListen: A sessão está aguardando conexões
- WTSReset: A sessão está sendo redefinida
- WTSDown: A sessão está fora do ar
- WTSInit: A sessão está inicializando
Detalhes Técnicos
APIs Utilizadas
- WTS API (wtsapi32.dll): Para enumerar sessões e consultar informações da sessão
- Windows Registry API (advapi32.dll): Para recuperar GUIDs de sessão do registro
Localização no Registro
Os GUIDs de sessão são armazenados em:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Remote\Terminal Services\Session\{SessionId}\SessionGuid
Limitações Conhecidas
- A Sessão 0 (sessão de Serviços) normalmente não possui um GUID
- Requer privilégios de administrador para acessar informações da sessão
- Algumas sessões podem não ter todas as informações disponíveis dependendo do seu estado
Solução de Problemas
Erro de "Access Denied" (Acesso Negado)
- Certifique-se de que está executando o aplicativo como Administrador
- Verifique se você tem as permissões adequadas no servidor
GUIDs de Sessão Ausentes
- Isso é normal para determinadas sessões do sistema (como a Sessão 0)
- Algumas sessões desconectadas podem não manter seu GUID no registro
Nenhuma Sessão Encontrada
- Verifique se você está executando em um Windows Server com Serviços de Terminal habilitados
- Verifique se a função Remote Desktop Services está instalada
Casos de Uso
- Administração do Sistema: Monitore sessões de usuário ativas e desconectadas
- Gerenciamento de Área de Trabalho Remota: Acompanhe conexões RDP e seus estados
- Auditoria de Segurança: Identifique sessões de usuário e seus identificadores exclusivos
- Scripts de Gerenciamento de Sessões: Integre com ferramentas de automação para limpeza de sessões
- Solução de Problemas: Diagnostique problemas relacionados a sessões em Servidores de Terminal
Licença
Este projeto é fornecido como está, para fins educacionais e administrativos.
Contribuição
Sinta-se à vontade para enviar issues, bifurcar (fork) o repositório e criar pull requests para quaisquer melhorias.