問題タブ [system-shutdown]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - プログラムで Windows (XP|Vista) でシャットダウンを中止する方法は?
できれば Windows API を使用して、アプリケーションから OS のシャットダウンを検出 (および、必要に応じて 2. 中止) できるようにしたいと考えています。
コマンドを使用してシャットダウンを手動で中止できることはわかっていshutdown -a
ます。
OSがシャットダウンしようとしていることをプログラムで通知するだけで十分かもしれません-これを行う方法は?
c# - システムのシャットダウン中に.NETWindowsサービスが中止されました
私のWindowsサービスは、かなりのキャッシュを備えたデータサーバーです。OnStopのサービス中に、データが失われないようにキャッシュを保存します。キャッシュの保存には数分かかる場合があるため、Windowsサービスマネージャーがタイムアウトしないように、SetServiceStatusWin32コールバックを使用します。
それはうまくいきます。
また、CanShutdownをtrueに設定し、OnShutdownを追加して、サービスがシステムのシャットダウンに耐えられるようにしました。ここでは、OnStopと同じことを効果的に行います。
それはあまりうまくいきません。システムがシャットダウンし、キャッシュが保存されているときに、「デバイスの準備ができていません」というメッセージが表示されます。これは、Windowsが停止/シャットダウンを完了する前にサービスを中止することを示唆しています。SetServiceStatusでそれを防ぐことは明らかに機能しません。
保存を完了するための時間を増やす(再起動を遅らせる)にはどうすればよいですか?
どんな提案も歓迎します。
delphi - Windows をシャットダウンするにはどうすればよいですか?
Delphi アプリケーション (7、2010 に移植しようとしている) で、システム (XP または 7) を強制的にシャットダウンするにはどうすればよいですか?
windows - プログラムでマシン名を指定してマシンの電源をオフにしますか?
スケジュールされたタスクになり、ドメイン上のコンピューター名のリストを取得するユーティリティを作成したいと思います。その名前のユーティリティ マシンで設定される特定の時間が経過すると、シャットダウンされます。
これについてあなたの考えを共有してください...
ありがとう。アンジャン
c# - WindowsME でユーザーのログオフまたはマシンのシャットダウン要求を処理する
WindowsME で動作する C# アプリケーションを作成する必要があります。はい、私はずっと前に忘れられていた Microsoft オペレーティング システムを意味します。私のプログラムはユーザーの操作を必要とせず、WindowsME はサービスをサポートしていないため、コンソール アプリケーションになります。さらに、最新のオペレーティング システムで使用され、ユーザーはコンソール アプリケーションとして起動するか、Windows サービスとしてインストールするかを選択できます。ここで、ソフトウェアが WinME で実行されていて、ユーザーがソフトウェアを事前に終了せずにマシンをログオフまたはシャットダウンすることを決定したとします。WinME は、プログラムがまだ実行中であると不平を言い、プロセスを強制終了するかどうかを尋ねます。ユーザー エクスペリエンスが悪いだけでなく、これはアプリケーションが適切にシャットダウンされていないことを意味します。
そのため、ユーザーがログオフするか、マシンをシャットダウンして、最初にソフトウェアの適切なシャットダウンを実行できるようにするかどうかを通知する方法を探しています。
c# - Windows NT サービスのシャットダウンの問題
私は、組織内の複数のプラットフォーム上の複数のクライアント アプリケーションに RPC 機能を提供するミドルウェアを開発しました。ミドルウェアは C# で記述され、Windows NT サービスとして実行されます。ネットワーク共有へのファイル アクセス、データベース アクセスなどを処理します。ミドルウェアは、Windows Server 2008 を実行する 2 つのハイエンド システムでホストされています。
サーバー管理者の 1 人が、主に Windows Update を実行するためにマシンを再起動しようとすると、NT サービスに関してシステムの動作に深刻な問題が発生します。私のサービスは、新しい接続のリッスンをすぐに停止し、既存の接続での新しい要求の拒否をすぐに開始し、そうでなければ、SCM からの OnStop または OnShutdown 要求の場合にできるだけ早くシャットダウンするように設計されています。それでも、システムの整合性を維持するために、現在進行中の操作は妥当な時間継続できます。通常、サーバーは 30 秒以内にシャットダウンします (たとえば、サービスが手動で停止された場合)。ただし、システムが再起動するように指示されると、サービスはすぐにネットワーク ドライブと UNC パスへのアクセスを失います。開いているファイルのデータ整合性の問題と、それらの場所への部分的な書き込みが発生します。私のサービスはワークステーション (および SMB リダイレクター) を依存関係としてリストしているため、Windows がそれらの依存関係を尊重している場合、ワークステーション/リダイレクターを停止する前にサービスを停止する必要があると思います。
基本的に、私のアプリケーションは強制的にクラッシュして焼き付き、リモート プロシージャ コールに失敗し、タイムアウト期間 (20 ~ 30 秒程度) が経過した後、最終的にオペレーティング システムによって強制終了されます。
Windows アプリケーションとは異なり、私の Windows NT サービスには、進行中のシステム シャットダウンを停止したり、システム シャットダウンを遅らせたり、または強制的に切断してシャットダウンする前に保留中のネットワーク共有ディスク書き込みを保存する機会さえもないようです。 . NT サービスの開発者は、この環境でアプリケーションの整合性をどのように確保する必要があるのでしょうか? サービスがそのようなメリットを享受していないように見えるのに、フォーム アプリケーションがシャットダウン前にビジネスを完了する機会をすべて得ているのはなぜですか?
私が試してみました:
p/invoke 経由で SetProcessShutdownParameters を呼び出して、アプリケーションにシャットダウンを通知し、リダイレクターがシャットダウンする前にシャットダウンしないようにします。
2 分の制限以下の値で ServiceBase.RequestAdditionalTime を呼び出す。
WaitToKillServiceTimeout の微調整
サービスのシャットダウンを高速化するために考えられるすべて。
しかし、最終的には、サービスがまだ OnShutdown イベントの通知を受けていないように見える問題が 30 秒ほど発生しますが、リダイレクタがネットワーク共有要求にサービスを提供しなくなったため、要求は失敗します。
この問題はどのように解決されることを意図していますか? シャットダウンを遅らせたり停止したりするにはどうすればよいですか? または、少なくともリダイレクター サービスが自分の下から消えることなく、アクティブなタスクをシャットダウンできるようにするにはどうすればよいですか? サービスが足を引きずってシャットダウンを表示するのを防ぐためにMicrosoftが何をしようとしているのかは理解できますが、それはサーバーではなくWindowsクライアントオペレーティングシステムにとって大きな目標のようです. サーバーを高速でシャットダウンするのではなく、運用の整合性と適切なシャットダウンが必要です。
ご協力いただきありがとうございます。
更新: 正確なタイミングを確認しました。テスト シャットダウンでは、23:55:58 にシャットダウン通知を受け取り、23:56:02 にネットワーク共有接続が失われていることに気付きました。つまり、4 秒以内に、アクティブな状態を保存できなくなりました。
c# - WindowsサービスC#からのシャットダウンをキャンセルする方法
Windowsサービスを開始しました(C#.net2.0で記述)。
コンピュータのシャットダウン/再起動を検出してキャンセルしたい。キャンセルした後、いくつかのアクションを実行してウィンドウを再起動します。
試しましたが、動作しません
別のテスト:
c - Linuxで保留中のシステムシャットダウンを検出する方法は?
システムのシャットダウンを検出する必要があるアプリケーションに取り組んでいます。ただし、このイベントに関する信頼できる通知を受け取る方法は見つかりませんでした。
シャットダウン時に、アプリがSIGTERM
シグナルを受信し、その後にSIGKILL
. シャットダウン シーケンスの一部であるSIGTERM
かどうかを照会する方法があるかどうか知りたいですか?
それをプログラムで照会する方法があるかどうかは誰にもわかりません(C API)?
私の知る限り、システムは差し迫ったシャットダウンを照会する他の方法を提供していません。もしそうなら、それは私の問題も解決するでしょう。私も試してみましたrunlevels
が、変更はrunlevels
瞬時に行われるようで、事前の警告はありません。
c# - ユーザーがログオフまたはWindowsをシャットダウンするときに、アプリケーションのシャットダウンを遅らせるにはどうすればよいですか?
起動からシャットダウンまでバックグラウンドで実行されるアプリケーションを作成していますが、状況によっては、ユーザーがシャットダウンを続行するかどうかを選択するためのダイアログを表示する必要があります。このアプリケーションはWindowsでのみ実行されますが、2000以降のどのバージョンでも実行できます。
私は確かにこのトピックについていくつかの調査を行いましたが、Windowsがアプリケーションのシャットダウンを処理する方法に関する情報(http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx)は少し散らばっています。誰かがこれを処理するための最良の方法の例、またはトピックに関する追加の知識を持っているなら、私はそれを非常に感謝します(私はC#の経験がほとんどありません)。
ありがとう!!
badPanda
編集:シャットダウンをブロックすることは良い習慣とは見なされないことを私は知っています。これは、このアプリケーションの重要なビジネス要件です。
編集:以下のいくつかのコメンテーターの提案(シャットダウンのブロックが不要になるように再設計するため)で、アプリケーションがデータを送信しているときにシャットダウンしないようにユーザーに通知するためにNotifyIconBalloonポップアップを利用しました。これにより、データがローカルコンピューターに数週間保持されるのを防ぐことはできませんが、ベストプラクティスとビジネス要件の間の適切な妥協点であると感じています。結局のところ、ユーザーが愚かになるなら...まあ、ユーザーは愚かになるでしょう。