8

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

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

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

我是一名 .NET 开发人员。

哇哦……!你们中的许多人真的主张不要这样做——“你不拥有我的电脑或我的操作系统”,——“你在开发 SkyNet”等等 :) 对于某些客户来说,这个应用程序是一个高度定制和封闭的解决方案。它是在 Windows XP Embedded 上运行并使用触摸屏的定制硬件上的信息亭应用程序。这不是公开的。

4

14 回答 14

12

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

给出这个警告后,您可能正在为更有意义的不同情况编写软件。您能否详细说明这样做的动机?

如果用户能够按住电源按钮(表明他们真的非常想关闭机器),他们是否无法物理移除电源?

编辑:回应 magsto 的评论:

如果每个参与的人都非常非常想要这个 - 向他们解释说如果出现问题并且他们需要硬重置计算机,他们将不得不采用更直接的关机方式,我怀疑这更有可能比“按住电源”方法损坏硬件...与设备制造商交谈。听起来您可能正在使用特定设备,因此他们可能能够为您调整 BIOS 中的某些内容,即使它不是公开可用的选项。

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

于 2009-03-13T10:19:15.043 回答
8

有关 4 秒规则,请参阅 ACPI 规范的第 62 页 ( http://www.acpi.info/DOWNLOADS/ACPIspec30b.pdf )

总而言之,逻辑是在硬件中。

于 2009-03-13T11:15:47.903 回答
5

确实是机械断电,所以会有点难以规避。

如果它真的很重要,您可以断开电源按钮并使用网络唤醒来打开/关闭计算机。远程关机。

于 2009-03-13T10:18:54.640 回答
5

使用脉冲发生器开关。我不确定这是否是正确的术语,但我已经在目录中看到了它们。这是一个速动开关,当您按下而不是松开它时,它只会“使”一秒钟。停在中间是行不通的。一旦达到阈值,该机构就会开始移动以关闭触点,并且在触点再次打开之前不会停止移动。这将允许您正常启动和正常停止,但无法保持电路闭合 4 秒。(当然不用打开机箱)

于 2012-12-21T05:48:49.710 回答
4

这是不可能的,因为此关机发生在操作系统级别以下,因此就操作系统而言,这就像拔掉插头一样!

于 2009-03-13T10:18:31.147 回答
4

据我所知,您说操作系统甚至没有参与这种类型的“关闭”是正确的。按住电源按钮一会儿只是向硬件发出信号,立即关闭计算机内所有设备的电源。正如您所说,正常的关机/睡眠/休眠事件当然可以使用 WinAPI 捕获和处理。

于 2009-03-13T10:19:18.400 回答
4

从主板上拔下电源线,并用硬接线将其始终打开。:)

于 2009-03-13T11:02:01.370 回答
2

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

于 2009-03-13T10:19:14.530 回答
2

您是否更接近开发天网?

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

于 2009-03-13T10:58:01.193 回答
2

好的,所以禁用电源按钮可能很疯狂。但是我们有一个软件应用程序,它使用数据库并使用一组昂贵的许可证。这家大型德国供应商使用许可证管理器在驱动器周围物理移动许可证。碎片整理、某些防病毒应用程序和切断电源会破坏许可证。如果机器电源被切断,我们有一个 UPS 可以优雅地关机。现在似乎某些服务人员或操作员使用电源按钮破坏了许可证,从而关闭了 PC。这些设备位于世界各地的偏远地区,培训操作员可能并不总是能防止这种情况发生。似乎解决方案选项是 1)与供应商合作禁用电源按钮,2)尝试捕获它并警告用户可能的厄运,

于 2009-03-27T22:09:13.830 回答
1

您不能也不应该弄乱此功能。

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

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

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

于 2015-02-27T09:16:46.453 回答
0

我建议以某种方式将电源按钮从用户手中拿走。也许完全删除它。并确保计算机在通电或其他东西时自动打开(不确定,但在 BIOS 中可能吗?)。

无论如何,对于一个永远在线的信息亭来说,这确实是有道理的。至少它适用于许多其他硬件。关闭它的唯一方法是切断电源。

于 2009-03-13T11:30:22.520 回答
0

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

于 2020-08-11T16:07:53.547 回答