Cómo apagar una máquina remota en Windows NT usando Visual Basic

Uno de los mayores inconvenientes que escucho de los administradores relacionado con Windows NT es la supuesta falta de herramientas de administración remota. Entre las más importantes se encuentra la capacidad de apagar una máquina NT de forma remota. Aunque considero que apagar un servidor en buen estado es equivalente a hacer paracaidismo desde un avión perfectamente funcional, a veces ocurren problemas y es necesario abandonar la situación. Con Visual Basic y algunas llamadas simples a la API, puedes asegurarte de aterrizar de forma segura.

Índice de Contenido
  1. InitiateSystemShutdown
  2. AbortSystemShutdown

InitiateSystemShutdown

La API de Windows NT incluye una función llamada InitiateSystemShutdown. Simplemente agrega esta función a la sección de Declaraciones Generales de tu proyecto de Visual Basic de la siguiente manera:

Private Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown As Long) As Long

Veamos cada uno de los parámetros requeridos y lo que significan. lpMachineName es simplemente el nombre de la máquina que deseas apagar. Si le pasas un valor nulo o una cadena vacía, se asume que deseas apagar la máquina local. Para mostrar un mensaje en la máquina remota, utiliza lpMessage. De esta forma, podrás informar a un posible usuario sobre lo que está sucediendo y por qué se está apagando el sistema.

El parámetro dwTimeout es el tiempo, en segundos, hasta que el sistema se apague. Si no especificas un valor aquí, el sistema remoto se apagará inmediatamente. Los últimos dos parámetros, bForceAppsClosed y bRebootAfterShutdown, actúan como valores booleanos, lo que significa que pueden ser verdadero o falso, 1 o 0. Sus nombres son autoexplicativos, pero permíteme darte una pequeña advertencia. BForceAppsClosed, si se llama con un valor de tiempo de espera bajo, puede que no dé a un usuario en la máquina remota tiempo suficiente para guardar su trabajo. Simplemente forzará el cierre de las aplicaciones, lo que resultará en la pérdida de cambios no guardados.

Tu éxito al utilizar esta función depende de un par de variables. Primero está la seguridad. Debes tener permisos para apagar la máquina. Si eres un administrador en la máquina, esto no debería ser un problema. Tu segundo problema es encontrar la máquina remota en la red. Los protocolos y servicios vinculados a tu adaptador de red determinan el mejor método para llamar a la máquina remota. Si tienes habilitado NetBIOS, puedes utilizar el nombre de NetBIOS. De lo contrario, debes utilizar otra cosa, ya sea una dirección IP o, preferiblemente, un nombre de dominio completamente calificado (es decir, nombremaquina.sudominio.com). El fallo de cualquiera de estos causará que la llamada a la función falle.

Si tienes éxito al llamar a la función (el valor de retorno es diferente de 0), aparecerá una ventana en la máquina remota informando al usuario (si lo hay) que el sistema se está apagando. También indicará quién solicitó el apagado, mostrará un temporizador que cuenta regresivamente hasta el apagado y mostrará el valor de lpMessage. El usuario no tendrá la opción de detener el apagado.

Cómo utilizar Registry Checker para solucionar problemas en Windows 98

AbortSystemShutdown

¿Qué sucede si cometiste un error y comenzaste el apagado de la máquina equivocada? ¿No creíste que te dejaríamos saltar sin un paracaídas, verdad? La API de Windows NT prevé esta posibilidad con otra función incluso más fácil de usar: AbortSystemShutdown.

Agrega esta función a la sección de Declaraciones Generales de la misma forma que hicimos con la función InitiateSystemShutdown:

Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long

Como puedes ver, solo toma un parámetro: el nombre de la máquina remota. Llama a la función y, si tienes éxito, el apagado en la máquina remota se detendrá. La clave aquí es que debes llamar a AbortSystemShutdown antes de que el valor dwTimeout expire; de lo contrario, será demasiado tarde.

Desafortunadamente, estas funciones no te permiten hacer mucho más que reiniciar una máquina de forma remota. Para obtener más opciones, tendrás que esperar a Windows 2000 o utilizar la Interfaz de Administración de Windows.
Si deseas compartir tu opinión, por favor publica un comentario a continuación.

Bill Gates presenta Windows 2000 en San Francisco con invitados especiales y un gran espectáculo

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Microsoft, allí encontraras muchos artículos similares a Cómo apagar una máquina remota en Windows NT usando Visual Basic , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.