Windows 2000 Server ボックス (Windows 2003 Server ボックスもあります) で実行されているほとんどの唯一のアプリケーションとして、C# VS2010 アプリケーションがあります。
ボックスから電源を取り外します。持続時間の短いバッテリ (おそらく 3 分間の電力) があり、10 秒間待機してから、システムがダウンしていると判断し、シャットダウンする必要があることを Windows に通知します。
Windows は CTRL_SHUTDOWN_EVENT イベントをアプリケーションに送信します。アプリケーションはそれをフィールドし、Windows がしばらくダウンしないようにして、この 1 回通信する別のコンピューターが最初のコンピューターでファイル作業を行えるようにします。これはタイミング ループによって行われ、ループが終了すると正常に終了し、コンピューターがシャットダウンします。
素敵な計画ですが、うまくいきません。アプリケーションはおそらく 20 秒に達し、アプリケーションは Windows によって強制終了され、Windows がシャットダウンします。90 秒で、バッテリを実行しているハードウェア ファームウェアがコンピュータの電源をオフにします。
Windowsを少しの間延期する方法を見つけるために検索を試みました。HKEY_LOCAL_MACHINE サブツリーを作成しようとしました (存在しませんでした): \SYSTEM\CurrentControlSet\Control\WaitToKillAppTimeout レジストリ キーを 60000 に設定しましたが、ポップアップが発生しないように見えましたが、Windows 自体はほぼ同じ時間で停止しました。優雅にシャットダウンする機会を持たずに考えてください。おそらく、レジストリ キーは機能していましたが、十分ではありませんでした。
基本的に、私は(最善の理由で)シャットダウンを拒否している「マナーの悪い」アプリケーションを持っており、レジストリキーがないと、Windowsは最終的にそれをシャットダウンしてからシャットダウンします。
レジストリの変更により、Windows がアプリケーションをシャットダウンせず、シャットダウンせずに Windows 自体が突然強制終了され、さらに約 1 分間電源が抜かれず、その後電源が抜かれるということが起こっていると考えられます。
ここにレイヤーがあるかもしれません。まず、アプリケーションが開いたままにしようとする時間です。次に、Windows を開いたままにしておく準備ができている時間があります。それから... 何か... ウィンドウを殺すものがあります。次に、電力損失があります。
窓を開けたままにして、約 20 秒ではなく 70 秒で操作できるようにする方法を知っている人はいますか? レジストリ キーは適切ですが、十分ではありませんか? Windows がシャットダウンを通知されてから、Windows 自体が強制終了されるまでの時間を決定するために設定する必要がある追加のキーはありますか?
前もって感謝します。