読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

マクロファイルをレジストリに登録したら PC 起動時に atom.exe と cmd.exe が無限増殖してハングするようになってしまった

neos21.hatenablog.com

ちょっと前に書いたこの自分の記事の記事の、「エイリアスを永続化させる方法2:レジストリに登録」という手順をやり直していた。

レジストリエディタを開き、HKEY_CURRENT_USER\Software\Microsoft\Command Processor\ に移動したら、文字列値 AutoRun を作成し、その値に %USERPROFILE%\Macros.txt と書く。

と自分で書いていたので、そのとおりに設定し、パソコンを閉じた。

すると再起動してから、スタートアップのソフトが開き終わるより前にパソコンが完全にフリーズするようになってしまった。

何度か再起動を繰り返し、起動直後にタスクマネージャを開いてみると、atom.exe と cmd.exe が無限に増殖していた。atom.exe はテキストエディタの Atom。cmd.exe はいわずもがな、コマンドプロンプトだ。これのせいでハングしていたらしい。

とりあえず直近の変更というと、マクロファイルを置いたこと、レジストリを上記のとおり書き換えていたことぐらいなので、起動直後に急いでファイルを消し、レジストリも消した。そしたらとりあえず解消。

原因は何だったのか?

原因を探っていたら、至極単純なことだと気付いた。

さっき引用した記事の文章をもう一度見てみよう。

レジストリエディタを開き、HKEY_CURRENT_USER\Software\Microsoft\Command Processor\ に移動したら、文字列値 AutoRun を作成し、その値に %USERPROFILE%\Macros.txt と書く。

太字で書いた場所に注目。AutoRun の値に Macros.txt を指定している。

しかし、この手法の出典である以下のページをよく見てみると、このように書いてあった。

HKEY_CURRENT_USER\Software\Microsoft\Command Processorに文字列値「AutoRun」を作成。データ値を「doskey /macrofile=%userprofile%\macros.txt」に変更してから、レジストリエディターを終了させます

そう、データ値の先頭に書く必要のある doskey /macrofile= という文言が不足していたのだ。

正しく記録できていなかった

要するに出典を基にブログ記事を書いた時にメモ誤りに気付かず、自分で見返した時にその誤った内容を信じてレジストリに登録してしまっていたのだ。

そのせいで AutoRun によりテキストファイルを開いてしまい、.txt の関連付けが Atom エディタになっていたせいで、どうやら atom.exe と cmd.exe が無限増殖してしまっていたようだったのだ。

元記事の記載誤りは修正した。ご迷惑をおかけしました。

というわけでおさらい

今回レジストリに登録するべき文字列はコマンドであった。マクロファイルを読み込んでエイリアスに登録する、というコマンドを指定のキーに登録しておくことで、起動時にそのコマンドが自動的に実行され、エイリアスが永続化できる、という仕組みだったワケだ。

この仕組みを理解していれば、登録するデータ値を見て「あれ、コマンドじゃなくてただのファイルパスになっているな??」と気付けていたはず。

もっと理解してメモして、理解して作業しなくては。