2009-03-13 25 views
5

En la mayoría de las computadoras más nuevas puede apagar de manera difícil presionando el botón de encendido durante unos segundos. Pero quiero prevenir esto por completo.¿Cómo denegar el apagado al presionar el botón de encendido por un tiempo?

Puede evitar algunos eventos blandos como los eventos de suspensión, suspensión, hibernación y "Presionar el botón de encendido" en el panel de control de Windows; también puede usar algunos programas Win32 y WDI para capturar y manejar/denegar esos eventos, pero no parece detener el apagado mecánico cuando mantiene presionado el botón durante más tiempo.

Supongo que el botón de encendido está cableado a la fuente de alimentación y nunca espera el sistema operativo cuando lo mantiene presionado durante unos segundos? ¿O hay alguna forma de prevenir incluso este caso por código?

Soy un desarrollador .NET.

Whooaaa ...! Muchos de ustedes realmente argumentaron por no hacer esto - "Usted no tiene mi computadora o mi sistema operativo", - "¿Está usted desarrollando SkyNet? Etc :) Esta aplicación es una solución cerrada altamente personalizada y para algunos clientes. Es una aplicación de kiosco en hardware personalizado que se ejecuta en Windows XP Integrado y utiliza una pantalla táctil. Es no es público.

+0

más Kiosked PC están en un 'kiosco' - para que los usuarios no autorizados no puedan tener acceso a los botones de encendido/restablecimiento, las unidades externas y puertos externos. Si su PC está expuesta, juguetear con el botón de encendido es solo la mitad de la solución. – CJM

+1

Si se trata de quioscos donde controla el hardware, simplemente desactive esta función en la BIOS. La mayoría de las computadoras tendrán una "Administración de energía" o "Modo de apagado ACPI" o algo similar dentro del BIOS que usted puede modificar. –

Respuesta

4

esto no es posible, ya que se produce este Apagar debajo del nivel del sistema operativo, así que es como tirar de la clavija en lo que se refiere al sistema operativo!

5

De hecho, es un apagado mecánico, por lo que será un poco difícil de evitar.

Si es realmente importante, puede desconectar el botón de encendido y encender/apagar la computadora con wake-on-lan resp. apagado remoto

2

Creo que la única forma de que pueda cambiar esto es cambiando manualmente la configuración en su BIOS. Esto probablemente no puede ser capturado por un lenguaje de programación. Si realmente lo necesita, puede desconectar el pequeño cable de la placa base que va al botón de encendido.

10

Deseo Espero que no puede hacer esto. Me he encontrado con situaciones varias veces en las que no podía reiniciar la computadora de ninguna otra manera. En tales casos, ¿realmente desea obligar a un usuario de computadora portátil a desconectar la fuente de alimentación y quitar la batería mientras se ejecuta?

Habiendo dado esa advertencia, puede estar escribiendo software para situaciones bastante diferentes en las que tiene más sentido. ¿Podría dar más detalles sobre la motivación para esto?

Si un usuario puede mantener presionado el botón de encendido (lo que indica que realmente, realmente quieren apagar la máquina), ¿no pueden eliminar físicamente la energía?

EDIT: En respuesta al comentario de magsto:

Si todos los involucrados realmente quiere esto - habiendo les explicó que si las cosas van mal y necesitan duro restablecer el sistema, van a tener que vaya a una forma aún más directa de apagado, que sospecho que es más probable que dañe el hardware que el método de "poder de retención" ... hable con el fabricante del dispositivo.Parece que probablemente estés trabajando con un dispositivo específico, por lo que es posible que puedan modificar algo en el BIOS por ti, incluso si no es una opción disponible públicamente.

Dado que esto casi siempre es una muy mala idea, no me sorprende que no haya un soporte simple para él, pero si le pregunta al fabricante puede haber alguna forma oculta de hacer lo que quiera. Aun así, le recomiendo que obtenga todos involucrados en para pensar en todas las posibles consecuencias.

+2

TBH, su motivación no importa. Esta característica es una última opción necesaria para cuando las cosas van mal. Sugeriría que si realmente es un problema, el acceso físico a la máquina es el verdadero problema. [¡DIOS MIO! ¡Estoy discutiendo con The Skeet! ¿Obtengo una insignia?] – CJM

+0

La aplicación es un producto personalizado, es parte de una "aplicación de kiosco" en una computadora con pantalla táctil y Windows XP Embedded, y tanto nosotros como el cliente queremos hacer esto. – Magnus

+0

@CJM: No creo que estemos realmente en desacuerdo :) Si el usuario tiene acceso físico, probablemente puedan apagarlo tirando del cable/batería. –

4

Por lo que sé, tiene razón al decir que el sistema operativo ni siquiera está involucrado en este tipo de "apagado". Mantener presionado el botón de encendido por un momento es solo una señal para que el hardware apague inmediatamente todos los dispositivos dentro de la computadora. Por supuesto, los eventos normales de apagado/suspensión/hibernación pueden detectarse y manejarse usando WinAPI, como usted indica.

1

No puede y no debe estar jugando con esta función.

puedo imaginar dos escenarios en los que esto podría ser un problema:

  1. no quieres que usuarios no autorizados de apagar la máquina por cualquier medio - en cuyo caso asegurar físicamente la máquina, así como el sistema operativo lockdown.
  2. No desea que la máquina se apague durante un proceso crítico, en cuyo caso desarrolle resistencia en su aplicación de modo que eventos tales como un apagado forzado o una falla de energía ambiental no comprometan la aplicación.
+0

"No quiere que usuarios no autorizados apaguen la máquina de ninguna manera". Dile eso a mi niño pequeño que le gusta presionar los botones – MichaelD

+0

@MichaelD - Te remito a mi referencia de "proteger físicamente la máquina", pero como alternativa, tal vez deberías asegurar físicamente a los niños pequeños. Pensaba en chaquetas rectas ... – CJM

2

¿Está usted más cerca de desarrollar SkyNet?

Lo siento por esta pregunta, pero como mucha gente ha sugerido, yo también creo que esto no debería ser posible, si es posible diseñarlo.

3

Desenchufe el cable de alimentación de la placa base y conéctelo para que esté encendido todo el tiempo. :)

+0

Sí, todas las modificaciones de hardware podrían ser el truco, pero estoy interesado en cómo podemos ir con el software ... – Magnus

0

Sugeriría que, de alguna manera, simplemente tenga el botón de encendido fuera del alcance del usuario. Tal vez quitándolo por completo. Y asegurándose de que la computadora se enciende automáticamente cuando recibe energía o algo así (¿no está seguro pero podría ser posible en la BIOS?).

De todos modos, para una cosa de kiosko siempre, esto tiene sentido. Al menos lo hace para mucho otro hardware. Donde la única manera de apagarlo es cortar el poder.

2

De acuerdo, entonces quizás sea una locura desactivar el botón de encendido. Pero tenemos una aplicación de software que usa una base de datos y usa un conjunto costoso de licencias. Este gran vendedor alemán usa un administrador de licencias que mueve las licencias físicamente alrededor de la unidad. Desfragmentar, ciertas aplicaciones antivirus y cortar el poder corrompe las licencias. Tenemos un UPS para permitir apagados elegantes si se corta la energía de la máquina. Ahora parece que algún operador u operador ha apagado la PC con el botón de encendido corrompiendo las licencias. Estos dispositivos están ubicados en lugares remotos de todo el mundo y la capacitación del operador no siempre puede evitarlo. Parece que las opciones de solución son 1) Trabajar con el proveedor para desactivar el botón de encendido, 2) intentar atraparlo y advertir al usuario de una posible perdición, o 3) rediseñar la pantalla con un sistema operativo y una aplicación inmunes a esta eliminación de energía.

4

Utilice un interruptor de impulsos.No estoy seguro de si ese es el término correcto, pero los he visto en el catálogo (s). Es un interruptor de acción instantánea que solo "hace" una fracción de segundo mientras presiona y no cuando lo suelta. Parar en el medio no funciona. Una vez que alcanzas el umbral, el mecanismo comienza a moverse para cerrar el contacto y no deja de moverse hasta que el contacto se abre de nuevo. Esto le permitirá comenzar normalmente y detenerse normalmente, pero no hay forma de mantener el circuito cerrado durante 4 segundos. (sin abrir la carcasa, por supuesto)

1

Tiene sentido cuando los usuarios de computadoras son niños y el botón de encendido se convierte más bien en un juego que en una acción de emergencia. La mejor manera de que un niño aprenda a apagar la máquina mediante software es desactivar el cierre mecánico.

Cuestiones relacionadas