按下电源按钮一段时间后如何拒绝关机?

时间:2009-03-13 10:15:58

标签: .net windows winapi hardware acpi

在大多数较新的计算机上,您可以通过按下电源按钮几秒钟来关闭硬盘。但我想彻底防止这种情况。

您可以在Windows控制面板中阻止一些软事件,如睡眠,暂停,休眠和“按电源按钮”事件;您还可以使用一些Win32和WDI编程来捕获和处理/拒绝这些事件,但是当您按住按钮较长时间时,它似乎不会停止机械电源关闭

我猜电源按钮是硬连接到电源的,当你按住它几秒钟时从不等待操作系统?或者是否有某种方法可以通过代码来防止这种情况?

我是.NET开发人员。

  

Whooaaa ...!很多人真的主张不这样做 - “你没有   拥有我的电脑或我的操作系统“, - ”是你   开发SkyNet“等等:)这个   应用程序是一个高度定制和   一些客户的封闭解决方案。   这是定制的自助服务终端应用程序   在Windows XP上运行的硬件   嵌入式并使用触摸屏。它的   不公开。

14 个答案:

答案 0 :(得分:11)

我希望希望你不能这样做。我遇到过很多次无法以任何其他方式重启计算机的情况。在这种情况下,您是否真的想强迫笔记本电脑用户拔掉电源并在运行时取出电池?

发出警告后,您可能正在为更有意义的情况编写软件。你能否详细介绍一下这个动机?

如果用户能够按住电源按钮(表示他们确实真的想要关闭机器)他们是否无法实际移除电源?

编辑:回应magsto的评论:

如果每个人都参与其中,真的想要这个 - 向他们解释说如果出现问题并且他们需要硬重置计算机,他们将不得不采取更直接的断电方式,我怀疑更容易损坏硬件而不是“压低功率”方法...与设备制造商联系。听起来您可能正在使用特定设备,因此他们可能会为您调整BIOS中的某些内容,即使它不是公开可用的选项。

鉴于这几乎总是一个非常糟糕的主意,我并不感到惊讶,因为它没有简单的支持,但如果你问制造商可能会有一些隐藏的方式来做你想做的事情。我仍然鼓励你让所有人参与考虑所有可能的后果。

答案 1 :(得分:8)

参见ACPI规范第62页有关4秒规则(http://www.acpi.info/DOWNLOADS/ACPIspec30b.pdf

很长而且缺点是逻辑是硬件。

答案 2 :(得分:5)

这确实是一种机械断电,因此很难规避。

如果它非常重要,您可以断开电源按钮并使用wake-on-lan转换打开/关闭计算机。远程关机。

答案 3 :(得分:5)

使用脉冲开关。我不确定这是否是正确的术语,但我已在目录中看到它们。它是一个快动作开关,只有当您按下时才会“瞬间”,而不会在您释放它时。在中间停止不起作用。达到阈值后,机构开始移动以关闭触点,并且在触点再次打开之前不会停止移动。这将允许您正常启动并正常停止,但无法保持电路关闭4秒钟。 (当然没有打开案例)

答案 4 :(得分:4)

这是不可能的,因为此断电发生在操作系统级别以下,因此就像操作系统一样拔出插头!

答案 5 :(得分:4)

据我所知,你说操作系统甚至不参与这种“关机”是正确的。按住电源按钮一段时间只是硬件的一个信号,可立即关闭计算机内所有设备的电源。正如您所述,当然可以使用WinAPI捕获并处理正常关闭/睡眠/休眠事件。

答案 6 :(得分:4)

从主板上拔下电源线,然后将其硬接线连接。 :)

答案 7 :(得分:2)

我相信你可以改变这一点的唯一方法是手动更改BIOS中的设置。这可能无法被编程语言捕获。如果您真的需要,可以从主板上拔下电源按钮上的细线。

答案 8 :(得分:2)

您是否更接近开发SkyNet?

很抱歉这个问题,但正如很多人所建议的那样,我也相信这不应该成为可能,如果可以设计的话。

答案 9 :(得分:2)

好吧,也许禁用电源按钮是疯了。但我们有一个软件应用程序使用数据库并使用一组昂贵的许可证。这家大型德国供应商使用许可证管理器,可以在驱动器周围移动许可证。进行碎片整理,某些防病毒应用程序以及切断电源会破坏许可证。如果切断机器电源,我们有一台UPS可以实现优雅的停机。现在似乎有一些服务人员或操作员已经通过电源按钮损坏许可证来关闭PC。这些设备位于世界各地的远程位置,对操作员的培训可能并不总能阻止这种情况。似乎解决方案选项是1)与供应商合作以禁用电源按钮,2)尝试捕获它并警告用户可能的厄运,或3)使用不受此电源移除影响的OS和应用程序重新设计显示器。

答案 10 :(得分:1)

你不能也不应该搞乱这个功能。

我可以设想两种情况,这可能是一个问题:

  1. 您不希望未经授权的用户以任何方式关闭机器 - 在这种情况下,物理上保护机器以及锁定操作系统。
  2. 您不希望机器在关键过程中关闭 - 在这种情况下,在您的应用中构建弹性,以便强制关闭或环境电源故障等事件不会危及应用。

答案 11 :(得分:1)

当计算机用户是孩子并且电源按钮变成游戏而非紧急动作时,它确实有意义。孩子学习通过软件关闭机器的更好方法是禁用机械关闭。

答案 12 :(得分:0)

我建议以某种方式将电源按钮从用户无法触及。也许完全删除它。并确保计算机在获得电源或其他东西时自动开启(不确定但可以在BIOS中使用?)。

无论如何,对于一个永远存在于自助终端的东西,这确实很有意义。至少它适用于其他许多硬件。关闭它的唯一方法就是切断电源。

答案 13 :(得分:0)

我也想实现同样的目标。在这里阅读答案时,我决定打开我的电脑。我拥有一台HP All-In-One,就我而言,我只能禁用电源按钮。要部分禁用它,只有通过硬件摆弄和调整才能实现。