Voltar ao portfólio ConectaDesk. Falar comigo
Aplicativo instalável para Windows

Acesso remoto que
não sai da empresa

A tela de um computador viaja direto para o outro, sem passar pelo servidor de ninguém. Alcança a tela de login e as janelas de administrador do Windows, onde programa comum não entra. Sem licença por técnico.

Por que eu construí Como funciona
ConectaDesk, sessão em andamento
Janela de quem controla: barra de ferramentas, tela do computador remoto e painel de medição aberto

Do lado de quem controla: a tela remota ocupa a janela inteira, com atalhos de sistema na barra e o painel de medição, aberto aqui, mostrando o que está acontecendo por baixo.

Por que eu construí

Não foi para reinventar o AnyDesk. Foi porque três coisas específicas não fechavam.

ConectaDesk
Tela inicial do ConectaDesk com o ID de nove dígitos e o campo para acessar outro computador
O problema

Sete sistemas em produção, várias lojas, um time de T.I.

O suporte acontece à distância o tempo todo: uma impressora que sumiu do sistema, um acesso que não entra, um relatório que não sai. Cada atendimento desses começa com alguém pedindo para ver a tela do outro.

  • ✓ Licença por técnico. As ferramentas de mercado cobram por assento, e o time cresce.
  • ✓ A tela sai da empresa. Nota fiscal, folha, contrato: tudo passava pela infraestrutura de outra companhia.
  • ✓ Já havia servidor próprio. A infraestrutura da empresa migrou para dentro de casa; faltava o acesso remoto acompanhar.
ConectaDesk, pedido de acesso
Pedido de acesso: quem está pedindo, o recado, e as quatro permissões da sessão com caixas de seleção
Consentimento

Ninguém entra sem alguém deixar entrar

O pedido chega com nome, ID e um recado de quem está do outro lado. As permissões são escolhidas antes de a sessão começar, uma a uma, e nenhuma vem marcada por acaso.

  • ✓ Controlar teclado e mouse, ou apenas deixar assistir
  • ✓ Compartilhar a área de transferência entre os dois computadores
  • ✓ Enviar o áudio do sistema junto com a imagem
  • ✓ Bloquear o teclado e o mouse locais, para os dois não disputarem o ponteiro
ConectaDesk, sessão ativa
Sessão ativa: cronômetro, chaves de permissão ao vivo, seleção de monitor e conversa
Durante a sessão

Quem é acessado continua no comando

Nada fica trancado no que foi decidido no início. As permissões viram chaves que se mexem no meio da sessão, e a conversa acontece na própria janela, sem abrir o WhatsApp para explicar o que está sendo feito.

  • ✓ Tirar o controle a qualquer momento, sem derrubar a sessão
  • ✓ Escolher qual monitor transmitir, em quem tem mais de um
  • ✓ Bloquear o Windows automaticamente quando a sessão terminar
  • ✓ Esconder a janela e continuar sendo atendido

Como a imagem
chega do outro lado

A parte que decide se a coisa é rápida ou não.

Direto entre os dois PCs

WebRTC ponto a ponto. O servidor só apresenta um lado ao outro e sai da frente, a imagem não passa por ele.

Serviço do Windows

Um serviço em C# rodando como SYSTEM alcança a tela de login e as janelas de administrador, onde um programa comum é barrado.

Injetor nativo

Teclado e mouse entram por um executável próprio via SendInput, com o mapeamento de monitores corrigido para escala e posição.

TURN próprio

Quando a rota direta não fecha, o desvio é por um servidor da própria empresa, não por uma nuvem de terceiro.

Atualização embutida

O app procura a versão nova no servidor da empresa, baixa e instala sozinho.

O caminho que a
imagem faz

O servidor apresenta um computador ao outro e sai da frente. A partir daí, imagem, som, teclado e mouse vão direto.

Quem controla recebe a tela envia teclado e mouse Computador acessado captura e comprime aplica os comandos Servidor de sinalização só a apresentação tela, som e área de transferência teclado e mouse TURN da empresa só quando o direto não fecha Serviço do Windows tela de login e UAC
a sessão em si, direta entre os dois apresentação, só no começo desvio de último caso

Quatro canais, quatro pressas

Teclado e mouse não podem esperar por uma imagem que está sendo baixada. Por isso cada coisa viaja no seu próprio canal, com a regra que faz sentido para ela.

input

Teclado e mouse

Um movimento perdido não faz falta, o próximo já corrige a posição. Esperar por ele, sim: o ponteiro trava.

sem ordem e sem reenvio
ctrl

Permissões e sessão

Autorização, troca de monitor, mudança de permissão. Aqui nada pode se perder nem chegar fora de ordem.

ordenado e confiável
chat

Conversa

As mensagens entre as duas pessoas, na ordem em que foram escritas.

ordenado e confiável
bulk

Imagens e arquivos

O que é copiado de um lado e colado no outro. Vai em canal próprio para não atropelar o ponteiro.

ordenado, com controle de fila

O que dá para medir

Números de uma sessão real, num Intel Core i3-14100 com gráficos integrados UHD 730, a máquina de trabalho, não um servidor.

13ms

Compressão por quadro

Cada quadro de 1920×1080 é comprimido em treze milésimos de segundo.

H.264hw

Em hardware

Quem comprime é o Quick Sync da placa integrada, não o processador.

31,5fps

Taxa em 1080p

Teto da captura de tela do sistema, e não do aplicativo.

0ms

De gargalo

Zero tempo limitado por processador ou por banda durante a medição.

banco de prova, captura de tela com movimento real
$ conectadesk bench --captura

  pedido 60 fps  →  1920×1080   entregue 31,5 fps
  pedido 60 fps  →  1280×720    entregue 28,6 fps
  pedido 60 fps  →   960×540    entregue 32,0 fps

  codificador  MediaFoundationVideoEncodeAccelerator
               (Intel® Quick Sync Video H.264 Encoder MFT)
  compressão   13,1 ms por quadro
  limite       none   cpu 0 ms, banda 0 ms
O que esses números querem dizer

A mesma taxa em qualquer resolução

Reduzir a imagem de 1080p para 540p não trouxe um único quadro a mais. Se faltasse folga de processamento, a resolução menor teria disparado a taxa, não disparou. É um teto da captura de tela do próprio Windows, não do aplicativo, e nenhum ajuste de qualidade passa dele. Descobrir isso mudou o rumo do projeto: a versão 1.4 parou de reduzir a imagem por causa de latência, porque atraso de rede não se resolve mandando menos pixels, só deixava a tela borrada sem ficar mais rápida.

O que é verificado
a cada versão

Um app de acesso remoto que falha em silêncio é pior do que não ter app nenhum.

npm run test:packaged, instalador recém-gerado
PASS  app empacotado abriu a tela inicial
PASS  está empacotado (não roda do código fonte)
PASS  injetor de entrada embarcado e encontrado
PASS  injetor iniciou e respondeu
PASS  ConectaDeskInput.exe em resources/
PASS  ID de 9 dígitos gerado na primeira execução
PASS  aponta para o servidor público de fábrica
PASS  registrou no servidor sem configurar nada
PASS  busca de atualização respondeu sem erro

versão 1.4.0 | electron 43.4.1

Instalador de verdade

Nove verificações rodam contra o executável gerado, não contra o código.

ID que não muda

Seis verificações provam que o número do computador sobrevive a reinícios.

Serviço de sistema

Confere que a peça que alcança a tela de login está instalada e responde.

Sessão ponta a ponta

Teste que sobe as duas pontas e valida o aperto de mão da conexão.

Injetor nativo

Verifica que o executável de teclado e mouse sobe e responde a comandos.

Quem pode entrar,
e até onde

Uma ferramenta que vê a tela inteira de alguém precisa ser chata com isso.

Aceite na máquina

Por padrão, toda sessão espera alguém clicar em Aceitar no computador que vai ser acessado.

Senha opcional

Para máquinas sem ninguém na frente, uma senha fixa libera a entrada, e é escolha explícita de quem instala.

Não perturbe

Recusa automaticamente qualquer pedido novo, com exceção para os IDs de confiança.

ID que não muda

Nove dígitos presos a uma chave secreta do próprio computador, outra máquina não assume o número.

Segredos protegidos

Senha e credenciais ficam cifradas pelo cofre do próprio Windows, não em texto puro.

Como ele chegou aqui

Cada versão resolveu um problema que só apareceu quando a anterior já estava rodando.

Onde ele ganha
e onde ainda perde

Comparar com as ferramentas de mercado só vale a pena se eu contar as duas metades.

CapacidadeFerramentas de mercadoConectaDesk
Custo por técnico✕✓
A tela não sai da empresa✕✓
Tela de login e janelas de administrador✓✓
Permissões escolhidas por sessão–✓
Área de transferência com imagens e arquivos✓✓
Vários monitores✓✓
Conversa dentro da sessão✓✓
Ctrl+Alt+Del e bloqueio remoto✓✓
Imagem a 60 quadros por segundo✓–
Celular e tablet✓✕
✓ Atende – Parcial ✕ Não atende

As duas últimas linhas são reais e eu sei por quê. Os 60 quadros exigem capturar a tela por fora do motor do navegador, o caminho já está mapeado, é o próximo passo. Celular ainda não existe: hoje é Windows para Windows.

Feito com

Electron

Aplicativo instalável em Windows, com instalador e atualização própria

WebRTC

Vídeo, áudio e canais de dados direto entre os dois computadores

C# / .NET

Serviço de sistema e injetor de teclado e mouse

Node.js

Servidor de sinalização que apresenta os dois lados e sai da frente

coturn

Servidor TURN próprio para quando a rota direta não fecha

Quer conversar sobre esse projeto?

Posso mostrar por dentro: a arquitetura, o que já mediu e o que vem na próxima versão.

Falar comigo