O Connect Desk é um software de suporte e controle remoto de alto desempenho baseado em tecnologias modernas de web e APIs nativas do Windows. Ele permite que você visualize e controle computadores remotamente em tempo real diretamente pelo seu navegador, sem a necessidade de instalar clientes pesados no lado do visualizador.
Com um design premium de última geração — utilizando dark mode, glassmorphism e efeitos fluidos —, o Connect Desk combina facilidade de uso com excelente performance.
- Dois Modos de Captura de Tela (GDI+ e DXGI): O Connect Desk oferece dois executáveis cliente, cada um otimizado para um tipo de ambiente:
connectdesk.exe(GDI+): Motor de captura viaGraphics.CopyFromScreen— ideal para VPS Windows com RDP ativo e máquinas físicas.connectdesk-vm.exe(DXGI): Captura via DXGI Desktop Duplication API (DirectX 11) — ideal para Máquinas Virtuais (VMware, Hyper-V, VirtualBox, KVM/QEMU) onde não há sessão RDP ativa. Funciona em modo headless, acessando o framebuffer diretamente pelo adaptador virtual.
- Controle Interativo Completo:
- Mouse: Movimentação, cliques (esquerdo e direito) e rolagem (scroll).
- Teclado com Atalhos Completos do Windows: Envio de texto, teclas especiais e todos os atalhos de sistema (Ctrl+C, Ctrl+V, Ctrl+Z, Ctrl+A, Alt+Tab, Alt+F4, Win, F1–F12, PageUp/Down, Insert, etc.) via mapeamento nativo de Virtual Key Codes (VK) do Windows.
- Transferência de Arquivos: Envie arquivos do seu computador local diretamente para o Desktop da máquina remota de duas formas:
- Drag & Drop: Arraste o arquivo sobre a tela remota — uma borda vermelha indicará a zona de soltura.
- Botão de Upload: Clique no botão "Enviar Arquivo" no painel HUD da sessão para selecionar o arquivo via diálogo do sistema.
- Sincronização de Área de Transferência (Clipboard Bidirecional): O conteúdo copiado na máquina remota é automaticamente sincronizado com o clipboard do seu navegador local, e vice-versa.
- Painel de Controle Web Responsivo: Interface web incrível baseada em fontes modernas (Outfit e Inter) com controle dinâmico de zoom/escala ("Ajustar à tela" ou "1:1 Real").
- Conectividade Segura por Sessão: Cada máquina de destino recebe um endereço exclusivo de 9 dígitos formatado e uma senha temporária aleatória de 4 dígitos gerada a cada inicialização do cliente.
- Servidor Web Coordenador Embutido: O próprio cliente consegue inicializar um painel web local na porta
4500caso esteja em rede local, permitindo controle direto. - Empacotamento Standalone: Ambos os clientes podem ser compilados em executáveis
.exede clique único usando a ferramentapkg. - Solução Inteligente para VPS Windows: Integração nativa de instruções e alertas para evitar o travamento de tela/tela preta comum ao minimizar ou desconectar sessões RDP em servidores virtuais.
Recentemente implementamos diversas melhorias significativas para profissionalizar a ferramenta como uma solução SaaS completa:
- Persistência de Senha do Cliente:
- Adicionada a opção de manter a última senha gerada no cliente entre as reinicializações.
- No
config.jsondo cliente, ao configurar"persistPassword": true, o sistema gerará a primeira senha e a gravará no arquivo. Nas próximas inicializações (incluindo resets de VPS), ele lerá e manterá essa mesma senha.
- Visualização de Versão no HUD:
- O visualizador Web agora exibe a versão exata do executável do cliente que está sendo controlado diretamente no HUD superior, logo ao lado do ID de Conexão (ex:
867 031 409 (v1.0.0)).
- O visualizador Web agora exibe a versão exata do executável do cliente que está sendo controlado diretamente no HUD superior, logo ao lado do ID de Conexão (ex:
- Servidor SaaS Compilado Standalone (
connectdesk-server.exe):- O código do servidor central agora pode ser compilado em um único executável executável independente do Windows (
dist/connectdesk-server.exe). Ele traz todas as dependências, páginas Web da pastapublic/e endpoints de API embutidos.
- O código do servidor central agora pode ser compilado em um único executável executável independente do Windows (
- Auto-Liberação Inteligente de Porta (
EADDRINUSE):- O executável do servidor agora detecta automaticamente se a porta
4500está ocupada na VPS no momento de sua inicialização. Ele localiza o PID do processo antigo que está bloqueando a porta, encerra o processo travado e inicia o servidor com sucesso sem falhas de inicialização.
- O executável do servidor agora detecta automaticamente se a porta
- Aba de Dispositivos e Clientes no Painel Admin:
- O Painel Administrativo agora possui uma seção de Gerenciamento de Dispositivos e Clientes em tempo real. O administrador pode visualizar todos os computadores cadastrados no sistema, o ID de conexão, a versão do cliente instalado, o status de conexão (ONLINE/OFFLINE) e qual operador o cadastrou.
- Mapeamento de Transações Explícitas (Firebird 5.0):
- Refatorada toda a camada de persistência de escrita (
db.execute) para utilizar transações explícitas comcommiterollbackgerenciados. Isso elimina o risco de travamentos de tabela (database locks) e conflitos transacionais no Firebird em cenários multiusuário.
- Refatorada toda a camada de persistência de escrita (
O projeto é dividido em três partes principais:
-
server/(Servidor Coordenador):- Baseado em Node.js, Express e Socket.io.
- Atua como um intermediário leve e de baixa latência que redireciona comandos de mouse/teclado dos visualizadores para a máquina alvo e redistribui os frames de vídeo da máquina alvo para os visualizadores.
-
client/(Cliente para VPS — GDI+):- Aplicativo Node.js que inicia um processo PowerShell persistente.
- O PowerShell carrega código C# nativo via
Add-Type, usando GDI+CopyFromScreeneuser32.dll. - Requer uma sessão GUI ativa (RDP conectado ou console físico) para capturar a tela.
- Ideal para: VPS Windows, servidores com RDP, máquinas físicas.
- Executável gerado:
client/dist/connectdesk.exe
-
client-vm/(Cliente para VMs — DXGI) 🆕- Variante do cliente que substitui o subsistema de captura por DXGI Desktop Duplication API (DirectX 11).
- Acessa o framebuffer diretamente pelo adaptador de vídeo virtual via PInvoke C#, sem depender de sessão RDP ativa.
- Funciona em modo headless — a VM pode estar sendo acessada apenas pelo console do hypervisor.
- Requer: Windows 8+, DirectX 11 e driver WDDM 1.2 (aceleração 3D ativada no hypervisor).
- Ideal para: VMware, Hyper-V, VirtualBox, KVM/QEMU.
- Executável gerado:
client-vm/dist/connectdesk-vm.exe
- Servidor Coordenador: Qualquer sistema operacional (Windows, Linux, macOS) com Node.js v16+ instalado.
- Cliente VPS (
connectdesk.exe): Windows com sessão GUI ativa (RDP ou console). APIs Win32, GDI+,user32.dll. Node.js v16+ (ou executável standalone). - Cliente VM (
connectdesk-vm.exe) 🆕: Windows 8 / Windows Server 2012 ou superior, DirectX 11, driver de vídeo WDDM 1.2 e aceleração 3D ativada no hypervisor. Não requer sessão RDP. - Visualizador (Viewer): Qualquer dispositivo moderno com um navegador web atualizado (Chrome, Edge, Firefox, Safari).
Primeiramente, baixe ou extraia o projeto. No terminal do diretório raiz, instale as dependências gerais do projeto e do servidor:
npm installEm seguida, navegue até a pasta client/ e instale as dependências específicas do cliente remoto:
cd client
npm install
cd ..Se for utilizar o modo VM, instale também as dependências do client-vm/:
cd client-vm
npm install
cd ..Inicie o servidor de conexão para que as máquinas possam se registrar e se comunicar. Por padrão, ele escutará na porta 4500:
node server/server.jsVocê verá a seguinte saída no terminal:
Server (Controller) running at http://localhost:4500
Nota: Se você for implantar o servidor em uma VPS ou nuvem, certifique-se de expor a porta 4500 (ou a porta configurada na variável de ambiente PORT) em seu firewall.
No computador que você deseja controlar:
-
Verifique as configurações no arquivo
client/config.json:{ "id": "411988342", "serverUrl": "http://localhost:4500" }Substitua
http://localhost:4500pelo IP público ou domínio do seu servidor coordenador, se ele não estiver rodando localmente. -
Inicialize o cliente:
node client/client.js
-
O console do cliente limpará a tela e exibirá as credenciais de conexão seguras formatadas:
================================================== CONNECT DESK REMOTE CONTROL CLIENT (PoC) ================================================== Endereço Remoto: 123 456 789 Senha Temporária: 4321 ================================================== Conectando ao Coordenador: http://localhost:4500 ================================================== ► SE DETECTAR TELA PRETA EM VPS WINDOWS: Caso sua sessão RDP caia ou seja fechada, a GUI trava. Para desconectar mantendo a tela ativa, rode no cmd: tscon 1 /dest:console (troque 1 pelo ID da query session) ================================================== ► PARA CONTROLAR OUTRO COMPUTADOR: Pressione [Enter] para abrir o Painel de Controle ==================================================
- No computador do suporte (Visualizador), abra o navegador e acesse o endereço do servidor coordenador (ex:
http://localhost:4500ou o endereço IP público/domínio da sua VPS). - Na belíssima tela inicial do Connect Desk, insira o Endereço Remoto de 9 dígitos exibido no console do cliente.
- Clique em Iniciar Conexão.
- Uma janela pop-up estilizada solicitará a senha. Digite a Senha Temporária de 4 dígitos gerada no console da máquina alvo e clique em Confirmar.
- Pronto! A tela da máquina remota será renderizada de forma ultra fluida. Use o mouse e o teclado para operá-la como se estivesse na frente dela.
O Connect Desk transmite todos os atalhos nativos do Windows para a máquina remota usando Virtual Key Codes (VK), mapeados diretamente para as APIs keybd_event do user32.dll. Basta pressionar as teclas normalmente na janela do visualizador:
| Atalho | Ação na máquina remota |
|---|---|
Ctrl + C |
Copiar |
Ctrl + V |
Colar |
Ctrl + X |
Recortar |
Ctrl + Z |
Desfazer |
Ctrl + A |
Selecionar tudo |
Ctrl + S |
Salvar |
Alt + Tab |
Alternar janelas |
Alt + F4 |
Fechar janela ativa |
Win (Meta) |
Abrir menu Iniciar |
F1 – F12 |
Teclas de função |
PageUp / PageDown |
Rolar página |
Home / End |
Início / Fim de linha |
Insert / Delete |
Inserir / Excluir |
Setas direcionais |
Navegar |
Como funciona: Cada tecla é transmitida como um evento
keydown+keyupcom o código VK correto. Modificadores (Ctrl,Alt,Shift) são mantidos pressionados enquanto você segura a tecla, permitindo combinações exatas comoCtrl+Shift+N,Alt+Tab, etc.
O Connect Desk permite enviar arquivos do seu computador local diretamente para o Desktop (Área de Trabalho) da máquina remota.
- Com uma sessão remota ativa, arraste um arquivo do seu computador para qualquer área da tela remota exibida no navegador.
- Uma borda vermelha animada aparecerá, indicando a zona de soltura.
- Solte o arquivo — ele será transferido e salvo automaticamente no Desktop da máquina remota.
- Um toast de confirmação será exibido com o status da transferência.
- Durante uma sessão ativa, clique no botão "Enviar Arquivo" (ícone de upload) no painel HUD superior.
- Selecione o arquivo desejado no diálogo do sistema operacional.
- O arquivo será transmitido e salvo no Desktop da máquina remota.
Nota: Arquivos de qualquer tipo e tamanho podem ser enviados. O arquivo é convertido para Base64 no navegador, transmitido via WebSocket (Socket.io) e gravado diretamente no disco da máquina alvo pelo cliente Node.js.
O Connect Desk oferece dois executáveis independentes, cada um adequado para um tipo de ambiente:
cd client
npm run buildO arquivo será gerado em client/dist/connectdesk.exe.
cd client-vm
npm run buildO arquivo será gerado em client-vm/dist/connectdesk-vm.exe.
Qual usar?
Ambiente Executável recomendado VPS Windows com RDP connectdesk.exeMáquina física com Windows connectdesk.exeVM VMware, Hyper-V, VirtualBox, KVM connectdesk-vm.exeVM headless (sem RDP ativo) connectdesk-vm.exe
A ferramenta pkg empacota todos os scripts, dependências e arquivos estáticos da pasta public em um único .exe sem necessidade de instalar Node.js na máquina controlada.
Ao utilizar o controle remoto em VPSs Windows, é comum se deparar com uma tela preta ao fechar ou minimizar o RDP. Isso ocorre porque o Windows desativa o renderizador GUI quando não há usuário RDP ativo.
Para solucionar:
- Abra o Prompt de Comando (CMD) como Administrador na sua VPS.
- Obtenha o ID da sessão RDP ativa:
query session - Anote o número da coluna ID da sua sessão (geralmente
1ou2). - Transfira a GUI para o console:
Exemplo:
tscon ID_DA_SESSAO /dest:consoletscon 1 /dest:console - O Connect Desk continuará transmitindo a tela sem tela preta.
Usuário de VM? Se você está usando uma Máquina Virtual (VMware, Hyper-V, VirtualBox, KVM), use o
connectdesk-vm.exe— ele não depende de RDP e captura diretamente pelo adaptador de vídeo virtual via DXGI.
O connectdesk-vm.exe foi desenvolvido especificamente para ambientes de virtualização onde o connectdesk.exe padrão não funciona corretamente (tela preta, sem captura).
O connectdesk.exe usa GDI+ CopyFromScreen, que depende de uma sessão GUI ativa (RDP conectado ou console físico com monitor real). Em VMs acessadas apenas pelo console do hypervisor, o Windows não mantém essa sessão ativa e a captura retorna tela preta.
O connectdesk-vm.exe usa DXGI Desktop Duplication API — a mesma tecnologia utilizada por OBS, TeamViewer e AnyDesk. Ele acessa o framebuffer diretamente pelo adaptador de vídeo virtual (sem precisar de sessão RDP), funcionando mesmo em modo headless.
| Requisito | Detalhe |
|---|---|
| Sistema Operacional | Windows 8 / Windows Server 2012 ou superior |
| DirectX | DirectX 11 |
| Driver de Vídeo | WDDM 1.2 ou superior |
| Aceleração 3D | Ativada no hypervisor |
| Privilégios | Administrador (obrigatório para DXGI) |
| Hypervisor | Como ativar |
|---|---|
| VMware | VM Settings → Display → ✅ Accelerate 3D graphics |
| VirtualBox | Configurações → Display → ✅ Enable 3D Acceleration |
| Hyper-V | Configurações → Vídeo → Enhanced Session Mode |
| KVM/QEMU | Adicionar dispositivo virtio-vga com virgl=on |
Se o executável detectar que o DirectX 11 / DXGI não está disponível (VM muito antiga ou aceleração 3D desativada), ele encerra com uma mensagem clara informando os requisitos mínimos — sem fallback silencioso.
[ERRO FATAL] DXGI Desktop Duplication não disponível
Requisitos mínimos:
- Windows 8 / Windows Server 2012 ou superior
- Driver de vídeo com suporte WDDM 1.2
- DirectX 11 habilitado na VM
- Aceleração 3D ativada no hypervisor
Para VPS com RDP, use connectdesk.exe.
O Connect Desk foi desenvolvido sob os mais rígidos padrões de design moderno para proporcionar a melhor experiência do usuário:
- Tipografia Fluida: Utilização das fontes Outfit e Inter via Google Fonts.
- Aparência Premium Glass: Efeitos de desfoque de fundo (backdrop-filter) e gradientes elegantes que acompanham as interações.
- Responsividade Dinâmica: O visualizador é compatível tanto com monitores ultrawide quanto com notebooks e telas menores, graças à capacidade inteligente de ajuste e redimensionamento automático do canvas.
Se este projeto foi útil para você ou se você deseja apoiar o desenvolvimento contínuo do Connect Desk, sinta-se à vontade para fazer uma doação de qualquer valor!
Toda contribuição é extremamente bem-vinda e nos ajuda a manter o projeto ativo, aprimorando funcionalidades e trazendo novas atualizações.
Escaneie o QR Code acima para doar qualquer valor via Pix 🚀
Para esclarecer dúvidas, reportar problemas ou interagir com outros desenvolvedores e usuários do Connect Desk, participe do nosso grupo oficial no WhatsApp:
👉 Acessar Grupo de Suporte no WhatsApp
Este projeto é desenvolvido para fins educacionais e de demonstração de conceito (PoC). Sinta-se livre para customizar, expandir e integrar em suas próprias soluções de suporte de TI!