Windows 7 sale de la suspensión cuando abro el escritorio remoto

24

¿Hay alguna manera de que una máquina con Windows 7 salga automáticamente del modo de suspensión cuando intento conectarme a ella con Escritorio remoto?

La opción de ahorro de energía de la máquina a la que quiero conectarme (aplicada por la política de grupo, creo) es dormir después de 30 minutos, lo que significa que tengo que caminar físicamente para presionar una tecla o encender un Wake-on- Herramienta LAN para sacarlo del modo de suspensión.

Sería bueno que el cliente de Conexión a Escritorio remoto enviara el paquete Wake-on-LAN automáticamente. ¿Es esto posible?

John Sibly
fuente
2
¿Las placas base más nuevas no tienen esta característica?
Dalin Seivewright
@DalinSeivewright Sí, mi nueva máquina de desarrollo hace esto automáticamente ahora :)
John Sibly

Respuestas:

13

Deberá enviar un paquete mágico (For Wake ON LAN) a través de su enrutador. Difícil porque los enrutadores no los reenvían de manera predeterminada, pero hay soluciones alternativas que se encuentran aquí :

Para activar una computadora desde Internet, necesita una conexión de banda ancha con un enrutador conectado al módem que mantenga viva su conexión (necesita un enrutador incluso si tiene IP estática).

La activación de la computadora desde el control remoto se realiza mediante el envío del paquete mágico a través de Internet utilizando su dirección IP de Internet y el número MAC de la computadora que desea activar.

Si no conoce su dirección IP:

Enlace a: Cómo encuentro la dirección de Internet de mi computadora / servidor desde una ubicación remota.

Debe preparar el sistema para Wake Up Over Internet.

Abra un puerto a través del enrutador y el firewall de software (use un número de puerto alto para que no entre en conflicto con ningún otro puerto, 5850 es un buen ejemplo).

Asigne el puerto a la IP interna de la computadora que desea WOL (puede usar el puerto solo para una computadora).

Obtenga esta utilidad que le permite definir un puerto para WOL.

Enlace a: Wake on LAN para la interfaz gráfica de usuario de Windows (WOL GUI)

Lleve consigo una copia de la GUI de WOL y anote el número MAC. En la ubicación remota, inicie WOL GUI y escriba su número MAC, escriba la dirección de Internet (IP de Internet) escriba el número de puerto que dejó abierto. Haga clic en Wake me Up y debería funcionar.

La utilidad:

texto alternativo

La utilidad GUI del paquete mágico es freeware.


También puede usar una tecla de acceso rápido para activarlo junto con la versión de línea de comandos de Wake On LAN :

La sintaxis:

C:\path\to\wolcmd.exe [Mac address] [IP address] [Subnet mask] [port number]

Haciendo las cosas más fáciles:

! w :: Ejecutar, C: \ wolcmd.exe 009027a324fe 195.188.159.20 255.255.255.0 8900
  • Alt+ wdespertará la computadora remota

modifique el script en consecuencia para que la ruta apunte al wolcmd.exeejecutable y la MAC, IP y la subred sean correctas.

John T
fuente
Hola, John: sí, esta es la herramienta que tengo que usar actualmente si quiero sacar esta computadora de la suspensión. Me preguntaba si era posible que Remote Desktop lo hiciera automáticamente.
John Sibly
1
Nativamente, no sé cómo hacerlo automáticamente, y si uso AutoHotkey para activarlo automáticamente cuando abres el escritorio remoto, abrir RDC por una razón diferente aún despertará la computadora de tu casa que no deseas, así que edité mi respuesta para explicar cómo configurar una tecla de acceso rápido para activar su computadora remota.
John T
1
La respuesta de John T es brillante. Todo lo que puedo agregar es que creé un acceso directo en mi escritorio con: wol -i 192.168.1.61 -p 00: 24: 8C: 1F: 90: 23 wol 00: 24: 8C: 1F: 90: 23 (Can ' No recuerdo por qué agregué dos comandos similares). Luego asigno al atajo un combo de teclado, por ejemplo, Ctrl + shift + j Funciona bien para una máquina de escritorio. Pero luchando con el nic de mi computadora portátil.
Guy Thomas el
Gracias por todos los comentarios. La versión de línea de comando parece muy prometedora. Creo que la solución (al menos para mí) es crear un archivo por lotes para: llamar a la herramienta de línea de comando, esperar unos 5 segundos e iniciar "mstsc.exe mycomputer.rdp"
John Sibly
3

Mejorando la respuesta de John Sibly ... si en Windows puede evitar el código C # utilizando el cmd "timeout" como se muestra a continuación.

ECHO OFF
CLS
WolCmd.exe MAC_OF_NIC IP_ADDR MASK 7
timeout 10
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

Consulte esta respuesta en StackOverflow para obtener más opciones con respecto a la sección de suspensión del archivo .cmd: https://stackoverflow.com/questions/4317020/windows-batch-sleep

Dennis
fuente
Comando útil: tendré que recordar eso para futuros archivos por lotes :)
John Sibly
2

Escritorio remoto no tiene ninguna capacidad de activación remota incorporada.

Es posible que pueda configurar su tarjeta de red para que se active en cualquier paquete. Sin embargo, esto probablemente no funcionará como pretendía, ya que no discriminará entre su intento de conexión de escritorio remoto y alguien que simplemente esté escaneando su red o un paquete latente de un servicio que estaba utilizando.

Por ahora, probablemente tendrá que conformarse con un proceso de dos pasos: 1) activar la computadora con una aplicación, 2) conectarse a través de un escritorio remoto.

Jason R. Coombs
fuente
2

Usando la información de las otras respuestas, terminé creando una carpeta que contiene los siguientes archivos:

connect.bat
mycomputer.rdp (remote desktop connection file)
sleep.exe (a little program to wait a specified number of milliseconds)
wolcmd.exe

Entonces, ejecutando connect.bat, activa mi computadora, espera 10 segundos y luego abre una conexión de escritorio remoto.

connect.bat contiene lo siguiente:

ECHO OFF
CLS
WolCmd.exe 0011AA22BB33 10.1.255.255 255.255.0.0 7
ECHO Sleeping...
Sleep.exe 10000
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

Puede generar sleep.exe guardando la fuente a continuación como sleep.cs y compilándola con el compilador de C # que viene con el marco .NET:

csc /out:sleep.exe c:\sleep.cs

Fuente para sleep.cs

using System;
using System.Threading;

namespace Sleep
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                int period = 0;
                Int32.TryParse(args[0], out period);
                Console.WriteLine("Sleeping for {0} ms", period);
                Thread.Sleep(period);
            }
        }
    }
}
John Sibly
fuente
2

Necesita un adaptador de red que admita la descarga ARP y el patrón de activación TCP SYN como se indica en http://technet.microsoft.com/en-us/library/ee617165%28v=ws.10%29.aspx

Si esas características son compatibles y están habilitadas, entonces los whindos no le advertirán sobre la política de suspensión / hibernación cuando encienda el escritorio remoto.

czz
fuente
Me di cuenta de que esto funciona en mi nueva máquina de desarrollo, supongo que esta es la razón.
John Sibly
1

Existen diferentes motivos relacionados con el mensaje de error que aparece.

No hay memoria suficiente

Cierre sus otros programas e intente conectarse nuevamente. Si el problema continúa, reinicie su computadora e intente conectarse nuevamente. Si aún no puede conectarse, póngase en contacto con su administrador de red o con el soporte técnico. (Para obtener más información, consulte Prevención de problemas de poca memoria).

Falla de red

Asegúrese de que su conexión de red funciona, por ejemplo, accediendo a algún dominio local o global o si el cable Ethernet está enchufado a su adaptador de red o el interruptor inalámbrico está encendido.

No se puede encontrar la computadora remota

Verifique que el escritorio remoto esté habilitado. Compruebe si la computadora remota está funcionando (ni en modo de suspensión ni de hibernación). Verifique el nombre de la computadora o su dirección IP y asegúrese de haberlo escrito correctamente.

La conexión de una computadora doméstica a una computadora en un dominio corporativo requiere un paso intermedio para garantizar que las computadoras puedan comunicarse, por ejemplo, para establecer una conexión de red privada virtual (VPN) a la red corporativa.

O otra aplicación podría estar usando el mismo puerto que RDP.

Para más ejemplos que mis casos más comunes o para detalles sobre cada uno de ellos, consulte:

strpeter
fuente