Windows がハードハング/フリーズした場合の機器の挙動をテストする必要があります(例:画面がフリーズする、LED が点滅しない、Ctrl+Alt+Del などの入力に反応しない、など)。合理的に短い時間で十分な実験を行うためには、これらのハングをプログラム的に開始するか、そうでなければ開始する必要があります
私は特にWindows 10に興味がありますが、他のバージョンのためのどのような作業方法でも構いません
私がこのトピックで行ったすべての検索は、驚くことではありませんが、これらの状況を刺激するのではなく、どのようにしてこれらの状況を排除する方法についての議論に私をもたらします。だから質問は十分に奇妙に見えるかもしれません
フィードバックしてみました。私は答えとコメントで提供されたレシピの多くを試してみました。まず第一に、私はBSoDをもたらすクラッシュに興味がありませんでした(私がクラッシュではなくフリーズを説明したのはそのためです)
私は正直に言うと、Windows 10 の 64 ビットは多くの方法に良い抵抗を示しました。それは、ほとんどすべての CPU 負荷の方法 (フォーク爆弾、ループなどを含む) に非常によく対処します。即時エラーを発生させる方法(NotMyFaultのハングメソッドのほとんど)は、OSが再起動やシャットダウンで処理します(これは私が追求したものではありません)。NotMyFaultのメモリリーク方法で一番良い結果が得られたのは、再起動の可能性がない本当のフリーズです
最後に、Windowsをフリーズさせることについて書かれたMicrosoftのドキュメントの量に感銘を受けました。この部分については、その反対(フリーズとの戦い)よりもずっとよく知っているように見えます
180 hypers 2017-11-02
もしかしたらこれが役に立つかもしれません。キーボードからシステムクラッシュを強制的に発生させた
USBキーボードでは、レジストリでキーボード主導のクラッシュを有効にする必要があります。レジストリ・キーHKEY_LOCAL_MACHINEで、CrashOnCtrlScrollという名前の値を作成し、REG_DWORD値0x01と同じに設定します
これらの設定を有効にするには、システムを再起動する必要があります
これが完了したら、以下のホットキーの順番でキーボードクラッシュを開始することができます。右端の CTRL キーを押しながら SCROLL LOCK キーを 2 回押します
またはフォーク爆弾を起動することができます。このSOの質問を参照してください
また、NotMyFaultもあります
Notmyfaultは、Windowsシステムのクラッシュ、ハングアップ、カーネルのメモリリークを引き起こすために使用できるツールです。デバイスドライバやハードウェアの問題を特定して診断する方法を学習するのに便利で、動作不良のシステムのブルースクリーンダンプファイルを生成するのにも使えます
230 duenni 2017-11-02
OSが無反応になった時の外部デバイスの反応をテストしているようにしか聞こえません
ハードウェアを仮想化された Windows インストールに接続できる場合は、仮想マシンを何度でも一時停止したり再開したりすることができます。VirtualBox (または他のデスクトップ仮想化) 環境に目的の OS をインストールし、使用しているハードウェアインターフェイス (USB、イーサネット、または何でも) を VM に公開します
24 barbecue 2017-11-05
少なくとも古いWindowsのバージョン(数年前)では、以下のように動作しました
エンドレスループのあるCプログラムを書いてみました
while(1) {}
… そして、タスクマネージャでそのプログラムに「リアルタイム優先度」を与えました(これができるAPIもあります)
マルチコアシステムでは、これを複数回行う必要があるので、各コアで1つのループが実行されています
22 Martin Rosenau 2017-11-02
最強のカーネルハング(マウストラッキングがないなど)は、カーネルモードで割り込みをオフにしてコードが無限ループに陥った場合です
デバイスドライバで実現できますし、さらに良いことに、自分のコントロール下でハングを開始したり停止したりするようにドライバを書くことができます(無限ループが自分がコントロールしている状態をテストしていると仮定して)
このドライバをどのように書いてインストールするかは、別の質問や3つの話題になると思いますが、私が取るアプローチです
10 Dylan McNamee 2017-11-03
あなたと似たような質問があるStackOverflowに以下の質問がありますので、ご確認ください。短時間でウィンドウをフリーズさせる方法
それのtl;drは、それを(確実に)行う方法がないということです
Windowsがフリーズしたり、ハングアップしたりするよりは、機器との通信を遮断すればいいのかもしれません
お使いの機器が何なのか、どのように接続しているのか全くわかりません。USBやイーサネットアダプターであれば、例えば、デバイスマネージャーで簡単に無効化したり、プラグを抜いたりすることができるのではないでしょうか?無理やりクラッシュさせたり、ハングアップさせたりすると、いろいろな意味でシステムにダメージを与えてしまう可能性がありますので、慎重に行いましょう
8 Ralf 2017-11-02
カーネルデバッグモードはオプションではありませんか?
私はWindows7で設定していますが、この回答のリンク先の説明書ではXP以降と明記されているので、Windows10でも動作するはずです
私の考えでは一番簡単なので、FireWire/1394経由で設定しましたしかし、ネットワーク経由で行うこともできます または USB (そして more)
Basically,
これらのコマンドを高架下のプロンプトで実行して、ターゲットコンピュータを設定します (チャンネル n
を選択します)
bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n
これは、msconfig
のブートタブに行って’Advanced’ボタンを選択するのと同じです
その後(ターゲットコンピュータを再起動した後)、ターゲットコンピュータのWinDbgと同じビット数のWinDbgを使ってホストコンピュータ上でWinDbgを実行します
あとは、ホストコンピュータから好きなときにカーネルの実行を一時停止すればいいだけです。もしあなたのテスト機器が何らかの非同期動作を行っているのであれば、これは他の手段と同様に有効であるはずです
5 Nick 2017-11-08
このバグ(Wayback machine link)は、リソースを消耗してWindowsがかなり早くフリーズします。再現も簡単です
実際には、コマンドライン (より具体的には
cmd.exe
) がバッチファイルを解析する方法のバグ (Wayback machine link) であり、迅速なサービス拒否型攻撃につながる可能性があります^ nul<^
長い話をすると、ファイルの末尾にキャレットがある場合、ファイルの実際の末尾は「無視」され、ファイルハンドルは0に「リセット」されます(基本的には)
3 beatcracker 2017-11-08
マウスカーソルはまだ画面上で動いているので、これが完全なフリーズに該当するかどうかはわかりませんが、Windows 7 の UI は、デバイスの I/O エラー、具体的にはハードドライブの障害が発生した場合に無反応になります。私のハードドライブの1つは、SMART経由で差し迫ったドライブ障害を自己報告しており、Windows 7はそれをマウントしますが、その上に保存されている特定のファイルにアクセスしようとするといつでもハングしてしまいます。ファイルを読み込むか、タイムアウト後にドライブをマウント解除するまでの間、UIは(マウスカーソルの動きを除いて)最大5分間ロックアップしていました。Windowsがタイムアウトにシステムクロックを使用しているかどうかはわかりませんが、どうにかして時間をフリーズさせればタイムアウトの長さを延ばせるのではないでしょうか?多分、これはあなたの一部の方法をそこに取得しますが、100%ではありませんが、あなたが探している答え
2 Dotes 2017-11-03
これは私がデバッグのレッスンで使用しているアプリケーションのソースコードです。ユーザモードのアプリケーションがどのようにDoS攻撃を行うことができるかを示しています
マウスカーソルがめったに動かないことに気づくでしょう(私のマシンでは11秒に1回)。もしあなたが十分に長く待っていれば、あなたのPCはまだ電源ボタンに反応する可能性があります
エンドレスループを使って動作し、プロセス(0x100
「リアルタイム」)に最優先度を設定し、スレッド(15
「タイムクリティカル」)に最優先度を設定します。これで8個起動しますので、i7のパソコンではこれで十分です。これ以上必要な場合は、ループを適応させてください。それ以上の数が必要な場合は、ループを適応させてください
#include "stdafx.h"
#include <windows.h>
#include <string>
#include <sstream>
#include <iostream>
void WasteTime()
{
int priority = 15;
::SetThreadPriority(::GetCurrentThread(), priority);
while (true)
{
}
}
int _tmain(int argc, _TCHAR* argv[])
{
::SetPriorityClass(::GetCurrentProcess(), 0x100);
for(int i=0; i<7; i++)
{
LPDWORD threadid = 0;
::CreateThread(NULL, 64*1024, (LPTHREAD_START_ROUTINE)&WasteTime, NULL, 0, threadid);
::Sleep(2000);
}
WasteTime();
return 0;
}
2 Thomas Weller 2017-11-08
Process Lassoに同梱されているCPUEaterユーティリティを試してみましたか?私はビットサムのために働いていません
0 beppe9000 2017-11-12
もし本当にPCをハングアップさせてフリーズさせたいのであれば、単純にRAMを使い切って、強制的にページメモリにしてください。それは単なるフリーズを超えて、本当にちょうどあなたもキーボードではなく、タスクマネージャを使用することができないようなことをオーバーロードします。処理が終了しても、PCが回復するまでには長い時間がかかります。(これは最高です!)
例えば、自分自身へのポインタを持つクラスを作成し、whileループでそのクラスの新しいインスタンスを永遠に作成し、新しいインスタンスを前のインスタンスのポインタに格納することができます。メモリをより速く消費するために、クラスにダブルスやベクターを追加することもできるでしょう。そうすれば、whileループを終了してすべてを分解するタイマーを持つことができます
-2 Andrew 2017-11-09
以下のコードでバッチファイルを作成することをお勧めします
@echo off
:x
start cmd.exe
start explorer.exe
start calc.exe
start notepad.exe
start iexplorer.exe
start paint.exe
goto x
これが最も簡単で安全な方法でしょう。プロセス名を任意のウィンドウズアプリケーションに置き換えることができます
-4 SLimy 2017-11-03
- Go to C:C:Women’sTempemp\\
- Ctrl-aキーを押して「すべて選択」を選択します
- Hit Enter
-10 asrhargar 2017-11-03