パスワードを忘れた? アカウント作成
743927 journal

fslashtの日記: 不死身のnotepad

日記 by fslasht

 InternetExplorerで「ソースの表示」を行う時、デフォルトでは notepad (メモ帳)が起動します。
 でもこれは使いづらいし、SJISにしか対応していません。
 そこで、これを別のエディターで置き換えようと思いました。
 IEをカスタマイズするツールでエディターをメモ帳以外に変更できることは知っていましたが、ファイルを置き換えてしまった方が手っ取り早いと思ったからです。

1.まずは、notepad.exe を notepad_.exe リネームしてバックアップ。
2.エディターをWinNTにコピーしてきて、notepad.exe にリネーム
3.「指定されたファイル名は既に存在します」エラー …なんで?
4.じゃあもういちど、notepad.exe を notepad_.exe リネーム
5.「指定されたファイル名は既に存在します」エラー …あれ?
6.リネーム後 notepad.exe が自動的に復元されていたようです
7.じゃああらかじめファイル名を notepad.exe に変更したエディターを上書きコピーだ
8.数秒後にもとの notepad.exe に戻ってしまいました

 おそるべし Win2kの自動リカバリ機能

# SMBポート開けっ放しにしといて、外部からウイルス入りnotepad.exeを放り込まれても自動復元されるのかな
# でも、復元元のバックアップファイルを上書きされちゃったらだめか

 復元元のファイルは、/winnt/system32/dllcache/ にあります。
 こいつを上書きしてしまおう。
 そのあと、/winnt/system32/notepad.exe を上書きします。

 ダイアログが出ました。
 「Windowsを正しく動作するために必要なファイルが認識できないバージョンのファイルに置き換えられています~」
…ばれてる

 ダイアログの警告を無視して処理をすすめていったら、置き換えはうまくいきました。

 置き換えた後気づきました。
 「EmEditor(フリー版)は、EUCに対応していない!」

 秀丸で置き換えることにしました。
 ところが、単純に秀丸で置き換えると常駐秀丸とnotepadの代わりとして起動する秀丸のディレクトリが異なるために、エラーとなり起動できません。

 とこで、ダメもとで秀丸のリンクを置くことにしました。
 /winnt/system32/dllcache/notepad.exe
 /winnt/system32/notepad.exe
を削除します。
 /winnt/system32/ に秀丸のショートカットを作って、ファイル名を「notepad」(ファイルシステム上は notepad.lnk )にします。

 結果、うまくいきました。
 これで、ソースがEUCのサイトも恐くないぞ~

# Windowsは内部的に実行ファイルを呼び出すときに、「notepad」のようにして実行しているようです(ShellExecute APIあたりかな)。柔軟性があって便利は便利だけど、こんなことだからルートにExplorer.exeとか置くと、そっちが実行されちゃうとかいうセキュリティーホールがあるんだろうな。

typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...