Apagar el ordenador (Shutdown)

Descripción general

En este artículo se describe cómo bloquear una estación de trabajo desde la línea de comandos, y como apagar una una estación de trabajo desde la línea de comandos y desde un programa

[TOC] Tabla de Contenidos


↑↑↑

Apagar el ordenador (Shutdown)


↑↑↑

Cómo bloquear una estación de trabajo desde la línea de comandos

El trexto que se muestra a continuacion esta copiado de [http://support.microsoft.com/kb/315268/es]

Para bloquear una estación de trabajo mediante programación, puede utilizar la función LockWorkStation de Win32. Llame a esta función desde la línea de comandos utilizando la interfaz Rundll32. Use el comando siguiente:

rundll32 user32.dll,LockWorkStation

Tenga en cuenta que este comando distingue entre mayúsculas y minúsculas y que tiene en cuenta los espacios en blanco. Esta llamada se introdujo en Windows 2000 y no se admite en versiones anteriores de Windows.

Para abrir una ventana de línea de comandos, haga clic en Inicio, Ejecutar, escriba cmd en el cuadro Abrir y, a continuación, haga clic en Aceptar.


↑↑↑

Cómo apagar una estación de trabajo desde la línea de comandos

Una de las formas de hacerlo es utilizar el programa shutdown.exe que viene con nuestro sistema operativo. Podemos realizar varias tareas con esta aplicación dependiendo los parámetros que le pasemos, las más destacadas son las siguientes:

Nota: Si deseas saber más sobre shutdown(SHUTDOWN.EXE) te recomiendo que abras una ventana de consola y ejecutes el comando y te mostrara la lista de las opciones de apagado. Aquí solo te muestro unas de las más importantes.


Uso: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]
    [/m \\equipo][/t xxx][/d [p|u:]xx:yy [/c "comentario"]]

    Sin argumentos  Muestra la ayuda. Es lo mismo que escribir /?.
    /?              Muestra la ayuda. Es lo mismo que no especificar ninguna opción.

    /i          Muestra la interfaz gráfica de usuario (GUI). Debe ser la primera opción.
    /l          Cierra la sesión. No se puede utilizar con las opciones /m o /d.
    /s          Apaga el equipo.
    /r          Apaga y reinicia el equipo.
    /g          Cierra y reinicia el equipo. Después de reiniciar el sistema, 
                reinicie las aplicaciones registradas.
    /a          Anula el apagado del sistema. Sólo se puede usar 
                durante el período de tiempo de espera.
    /p          Apaga el equipo local sin tiempo de espera ni advertencia. 
                Se puede usar con las opciones /d y /f.
    /h          Hiberna el equipo local. Se puede usar con la opción /f.
    /e          Documenta la razón del cierre inesperado de un equipo.
    /m \\equipo Especifica el equipo de destino.
    /t xxx      Establece el período de tiempo de espera antes del 
                cierre en xxx segundos.
                El intervalo válido es de 0 a 315360000 (10 años); 
                el valor prede terminado es 30.
                Si el período de tiempo de espera es superior a 0, 
                el parámetro es implícito.
                
    /c "comentario" Comentario acerca de la razón del reinicio o apagado. 
                    Se permiten 512 caracteres como máximo.
    /f         Fuerza el cierre de las aplicaciones sin advertir previamente a los usuarios.
               El parámetro /f es implícito cuando se especifica 
               un valor mayor que 0 para el parámetro /t.

    /d [p|u:]xx:yy  Proporciona la razón del reinicio o cierre.
               p indica que el reinicio o el cierre está planificado.
               u indica que la razón está definida por el usuario.
               Si no se especifica p ni u, el reinicio o el apagado no estarán
               planeados.
               xx es el número de razón principal (entero positivo inferior
               a 256).
               yy es el número de razón secundario (entero positivo inferior
               a 65536).
 
 


↑↑↑

Ejemplo

Para abrir una ventana de línea de comandos haga clic en [Inicio>Accesorios> símbolo del sistema>. En la consola que se abre escribir [shutdown.exe /s /t5] y pulsamos enter

Lo que hacemos es ejecutar el programa "shutdown.exe" indicándole con el parámetro "/s" para que se apague el equipo y con el parámetro "/t5" que se apague al cabo de cinco segundos, podemos modificar el número de segundos por el que nos interese.


↑↑↑

Cómo apagar una estación de trabajo mediante programación


↑↑↑

Codigo inicial

A continuación tienes un código copiado, pegado, traducido y mínimamente adaptado que figura en la siguiente web [http://www.elguille.info/colabora/2007/phanthom2k_ApagadoPC.htm] En el que se muestra como se puede usar el programa shutdown.exe desde un programa .NET. El problema que tiene el código de la página de "El Guille", es que solo funciona cuando trabajas como administrador del sistema, y como todo el mundo sabe hay que trabajar siempre con una cuenta de usuario, por lo que no resuelve del todo el problema

    Public Sub Shut_Down()
      Try
          ' Process.Start("shutdown", "/s /t 0")
          Dim proceso As Process = New Process
          proceso.StartInfo.UseShellExecute = False
          proceso.StartInfo.RedirectStandardOutput = True
          proceso.StartInfo.FileName = "shutdown.exe"
          proceso.StartInfo.Arguments = "/s /t5"
          proceso.Start()
      Catch ex As System.Exception
          Throw
      End Try
  End Sub
  

↑↑↑

Código Definitivo

El código que se muestra a continuación se puede copiar de

http://es.w3support.net/index.php?db=so&id=102567 o de

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/ab7c4522-80e5-4e80-a790-978f6134fb45/

Y éste si que funciona sin problemas y apaga el ordenador desde una cuenta de usuario


Private Sub Shut_Down()

      '' Recuerda que tienes que añadir una referencia al ensamblado System.Management   
      'Imports System.Management

      Dim mboShutdown As ManagementBaseObject = Nothing
      Dim mcWin32 As ManagementClass = New ManagementClass("Win32_OperatingSystem")
      mcWin32.Get()
      ' You can't shutdown without security privileges
      mcWin32.Scope.Options.EnablePrivileges = True
      Dim mboShutdownParams As ManagementBaseObject = mcWin32.GetMethodParameters("Win32Shutdown")

      ' Flag=0  cierra la sesion del usuario
      ' Flag 1  apaga el ordenador
      ' flag 2  reinicio
      ' flag 3  nada
      ' "Reserved") = "0" Avisa que hay aplicaciones sin cerrar
      ' "Reserved") = "1" cierra todo en automatico, no pregunta nada
      mboShutdownParams("Flags") = "1"
      mboShutdownParams("Reserved") = "1"
      For Each manObj As ManagementObject In mcWin32.GetInstances
          mboShutdown = manObj.InvokeMethod("Win32Shutdown", mboShutdownParams, Nothing)
      Next
  End Sub
  
  

↑↑↑

A.2.Enlaces

[Para saber mas]
  • ManagementBaseObject (Clase)
    • Contiene los elementos básicos de un objeto de administración. Sirve como una clase base para la administración más específica de clases de objetos.
    • http://msdn.microsoft.com/es-es/library/577y3335.aspx
  • ManagementClass (Clase)
    • Representa una clase de administración del Modelo de información común (CIM). Una clase de administración es una clase WMI como Win32_LogicalDisk, que puede representar una unidad de disco, y Win32_Process, que representa un proceso como Notepad.exe. Los miembros de esta clase permiten obtener acceso a los datos WMI mediante una ruta de acceso de clase WMI específica. Para obtener más información, vea "Win32 Classes" en la documentación de Instrumental de administración de Windows en MSDN Library, http://msdn.microsoft.com/library/spa.
    • http://msdn.microsoft.com/es-es/library/hfahwb44.aspx
  • ManagementBaseObject (Clase)
    • Contiene los elementos básicos de un objeto de administración. Sirve como una clase base para la administración más específica de clases de objetos.
    • http://msdn.microsoft.com/es-es/library/577y3335.aspx
  • ConnectionOptions.EnablePrivileges (Propiedad)
    • Obtiene o establece un valor que indica si los privilegios de usuario necesitan habilitarse para la operación de conexión. Esta propiedad sólo debe usarse cuando la operación realizada requiere la habilitación de un determinado privilegio de usuario (por ejemplo, un reinicio de equipo).
    • http://msdn.microsoft.com/es-es/library/4ake5cdz.aspx
  • ConnectionOptions (Clase)
    • Especifica toda la configuración necesaria para realizar una conexión WMI.
    • http://msdn.microsoft.com/es-es/library/8x4f15h4.aspx
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]