Knowhow Software Tool  [ W2KSGN ]

Windows 2000 の署名を消去して、正常に起動できるようにする方法およびそのためのソフトウェアツール

ここをクリックしてダウンロードする
Copyright(C)2002-2003 まりも

問題の所在

 Windows 2000 の起動ドライブの領域を、不適切な方法で別の物理ディスク上の領域にコピーすると、起動はするもののログインを永久に繰り返すという状態になり、ログインすることができなくなる。この問題はマイクロソフトも把握しており、PC/AT互換機でも9821でも発生する。直接の原因はページファイルが見つからないことにあるが、その原因は正しいドライブレターのドライブから起動していないことによる。
参考マイクロソフトのサイト(PC-9821の場合事情が少し異なる)

 ドライブレターが不正となってしまう問題は、Windows2000がディスクに施す「署名」にある。署名とは、Windows2000がディスクを個体識別するために書き込むある値の情報である。これにより、過去に繋いだディスクかどうかを判断する。同じ値はレジストリにも書かれていて、起動ごとにディスクに書かれている署名値と照合される。一致した場合は、レジストリに記されているドライブ文字がそのディスク装置のその領域に割り当てられる。このために、Windows2000では、デフォルトのドライブ文字割付けを無視した、かなり自由なドライブレター割り付けが可能となっている。レジストリにない新しい署名値のディスクがみつかると、空いている新しいドライブレターを、その各領域に割り当てようとする。以上がWindows2000のドライブ割り付け原則だ。

 ところがWindows2000の領域を新しいディスクにコピーした場合は、そのディスクには署名というものが書かれていないか、レジストリにない値が書かれていることになる。 後者の場合、これまで接続したことのないディスクと判断されてしまう。これまで たとえば D: ドライブとして起動することになっていたWindows2000の領域は、それ以外の空いているドライブレターで起動しようとしてしまう。ここで、ページファイルの作成先 D: も存在しないことになってしまうために、永久にログインできないという症状になってしまうのだ。

 いっぽう前者の場合、すなわち署名がまったく書かれていない場合は、「デフォルトのドライブレター順序」が割り当てられ、起動途中に署名が書かれ、レジストリにも登録される。そのときデフォルトのドライブレター順序と現在のそれとが一致している場合は、ログインできるのだ。

 したがって、Windows2000起動前に次のことをやっておけばログインできるはずだということになる。

  1. Windows2000の領域のドライブレターが、デフォルトドライブ順序による場合と一致するようにする
  2. 署名を消去する(w2ksgn.exeの実行)
  3. Windows2000のブートパス(boot path)が変更になる場合はboot.iniファイルを修正する
ということを行なえば、きちんと起動もするし、ログイン失敗はない。

 デフォルトドライブレター順序は、次のように決定される(これはWindows98のATセットアップの場合と同じ)。

 起動させたいWindows2000領域より前方に、ダミーのディスクドライブを接続したりダミーの領域を作れば、Windows2000のドライブレターを後方に持ってゆくことができる。いっぽう要らない領域を削除すれば、そのぶん前方にもってゆくことができる。もともと割付順位先頭のドライブにC:としてインストールされていた場合は、何もする必要はない。

 たとえばいままで下記の構成であったとすると、

・IDE
 領域1 A: MS-DOS
・SCSI ID=0
  領域1 B: MS-DOS
 領域2 C: Windows98
 領域3 D: Windows2000

デフォルトのドライブ順序で D:のWindows2000が D:として起動できるようにするためには、IDEの領域1を取り外し、さらにSCSIの領域1を削除しなければならないということになる。

 しかしたとえば

・SCSI ID=0
 領域2 C: Windows98
 領域3 D: Windows2000

 のような場合は、既にデフォルトドライブレターどおりなので、とくになにもしなくてもい。このように、問題が生じやすいのは、

などであろう。
 

ソフトウェアの使い方

アーカイブファイルをLHAで解凍して、実行ファイルw2ksgn.exeを取り出す。次にw2ksgnを実行する。必ずMS-DOSあるいはWin9xのDOSモードのコマンドラインで実行すること。Windows9xのDOS窓やWindows2000のcmd窓から使用してはいけない。

コマンド引数なしで

w2ksgn

と打つと、署名を削除したいディスクドライブの選択リストが現れるから、目的のディスクだけを選んで処理する。目的のもの以外を処理すると、あとでそのディスクの Windows200におけるドライブレターが正しくなくなるので、不用意に選択しないこと。

コマンド引数として、 /C を与えると、署名のコピーをおこなう。

w2ksgn /c

と打つと、どのディスクからどのディスクに署名をコピーしたいのか尋ねてくる。通常は、Windows2000のコピー前のディスクからコピー後のディスクということになるはずだ。このモードで注意しなければならないのは同一署名値のディスクが複数存在したままWindows2000を起動してはいけないという点だ。署名をコピーしたら、どちらかのディスクは必ず取り外す必要がある。Windows2000は、同一署名値のディスクが複数あると、どちらかのディスクドライブの署名値を変更し、それに新しいドライブレターを再割付しようとするのだ。次回Windows2000を起動したときに、署名値が書き換えられている恐れがあり、その場合正常にログインできなくなる
 

作成 2002.9.1 改訂2003-5-10 まりも