私だけかもしれませんが, Microsoft Visual C++ Ver6 (以下 VC++) 上で特にスレッドを多用したプログラムを開発中, ブレイクポイントで動きを止めると, VC++ 自体がハングすることがよくあります. VC++ だけがハングするのならまだ許せるのですが, 他のウィンドウまで反応が無くなります.
まぁ気長に 15 分くらいかければ, ゆっくり動き出したり, タスクマネージャが起動できて VC++ を落とすこともできますから, 正確には「ハング」するというより「異常に鈍くなる」ものなんですが, しかしもともと気が短いたちでして, なかなかそんな悠長なことはできず電源ボタンに手が伸びます.
とは言え, 再起動にもそれなりに時間がかかりますし, せっかく開いているファイルやアプリも閉じてしまうわけですから再起動も悩み所です. できたら犯人 (MSDEV.exe) だけ殺したいものです.
これが UNIX だったら 別 PC から telnet で入って ps して kill かけられるのに... まるでnetcmdと同じ愚痴ですね. ちなみにこの netcmd は NT 時代に遠隔からシャットダウンするために作った物ですが, Xp 時代に入って電源スイッチでシャットダウンが出来るようになったため 使われなくなったものです. でも, シャットダウンの代わりに遠隔から ps と kill が出来たら便利だなと考え作ってみたのがこれです.
プログラム本体は こちら です. 起動すると ID, パスワード, ポート番号を記入する欄があります. 初期値は
ID | netps |
Pass | NetPS |
Port | 4949 |
というよりはパスワードの変更は強く奨励します. ただし後述するようにパスワードは遠隔操作時に画面に表示されるので ログインパスワード等とは別のものにしていた方がいいでしょう. さらにパスワードの保存は一応不可視してはいますが方法は適当に作ったものです. あまり真剣にならず使い捨て気分のものを使ってください. なお, 設定はファイルとして実行形式と同じディレクトリに保存されます. レジストリは使っていませんので, アンインストールは該当ファイルを消すだけです.
利用するには, 別 PC でコマンドプロンプトを開き
telnet 192.168.0.5 4949 |
接続したら ID とパスワードを求められますので設定した ID とパスワードを入れます. この際パスワードは画面に表示されますので盗み見られぬよう気をつけてください.
なお, Windows のコマンドプロンプト上から telnet されることがほとんどだろうと, コマンドプロンプトの telnet で使いやすいようにしています. Linux など他の OS や TeraTerm などを使う場合は
改行 (受信) | CR |
改行 (送信) | CR+LF |
エコー | on |
文字コード | SJIS |
ID とパスワードが正しければコマンド待ちになります. 使えるコマンドは以下の通りです.
プロセス番号, 実行ファイル名, タイトルの一覧を表示します. タイトルに関しては得られた物だけ表示してます. ハングの仕方によってはタイトル取得に異常に時間がかかるため, 取得に 5 秒以上かかる際もタイトルの表示は行いません.
対応するプロセスを強制終了します. タスクマネージャの「プロセス」と同じく, 変なものを殺すと OS がおかしくなるなどの不具合が起きるときがあります. 強制終了の対象は吟味してください.
PC を落とします. おまけで入れてみました.
接続を切ります.
コマンド一覧を表示します.
上手く動くようになれば「スタートアップ」にでも登録しておくといいでしょう. その際, "-h" という引数を付けると起動後すぐにトレイ待機になります.
あたりまえですが, 本プログラムによって生じたいかなる障害に対しても 作者は一切その責を負いません. 自己責任でお願いします.