やるきなし

2015/05/22 23:29 / Windows 8 で Local User Password を Reset する

職場から異動していった人のPCを他の人が使うということで,その設定をしようとしたが,ドメイン参加無しのスタンドアロン状態の Windows 8 で,前の使用者のみのアカウントがある状態で,ログインできず悩む.リカバリしようとリカバリDVDを探したが見つからない.

ということで,いろいろ調べた結果,その前使用者には悪いがパスワードをリセット(クリア)させてもらうことにした.

具体的には HDD の中を直接操作して,パスワードの保存されているファイル Windows/System32/config/SAMを修正するという作業になる.

今回対象としている計算機は1G HDD + 60G SSDで,Intel Rapid Storage Technology で RAID0 (Cache) という構成になっていて,はまる.起動時の設定画面で見えるのは http://www.pcper.com/reviews/Storage/Intel-Smart-Response-Technology-SSD-Caching-Z68-Tested/Boot-Option-ROM-Boot-Performaにあるような感じ.

Debian Installer でこの Disk を認識させようとすると,/dev/md127, /dev/md126 として見える (コンソールで mdadm 等を使ってもイマイチ正しく扱えない).

普通に起動させた Linux から認識させようとすると,今度は /dev/sda4 などとして Windows 領域が見えるが,この状態で mount してファイルを修正すると,どうもファイルの内容が壊れるらしい (詳細未確認,ファイルシステムが壊れるまではいかない).

ということで,起動時の Intel RST Option ROM からの設定で,RAID0(Cache)を解除(Reset Disks to Non-RAID)し,Cache 設定が無くなった素のHDDの状態で作業すると上手く行くことがわかった.

具体的には SAM ファイルのバックアップをとった状態で作業.アカウントのリスト表示は以下のようにする.

% cd /somewhere/Windows/System32/config/
% /usr/sbin/chntpw -l SAM

chntpw コマンドは Debian GNU/Linux の場合 chntpw というパッケージに入っている.ユーザーのパスワードをリセット(正確には Clear (blank))するには,

% /usr/sbin/chntpw -i SAM
で対話モードに入って,対話的に行う.

あとはこれで再起動してしまえば,パスワード入力無しで,その唯一のユーザーとして自動的にログインしてしまう.ちょっとこの状態で設定を続けるのは問題があるような気もするので,

を手早く行い,新たに作成したアカウントでもって,ドメイン参加等の設定を行った.

ちなみに Intel RST Option ROM からはRAID0(Cache)の (つまりSSDをキャッシュとして使う)設定は出来ず (出来るのは通常のRAID0とRAID1のみ),再度有効にするためには Windows から設定を行う.

chntpw 以外のアプローチ

パスワードリセット用 CD-R or USB を利用する

一般的には,こういった小細工をするための CD-R や USB を作成して,そこから作業をするらしい.利用してみたのは以下の2種類.この時はRAID0(Cache)設定に気付かず,ともに Windows 領域が見えず断念.

Utilman.exe に細工する

にあるように, Utilman.exe を cmd.exe で置き換えてしまう,という技もあるらしい.

Utilman.exe は Ease of Access (コンピュータの簡単操作) を提供する実行ファイル.Ease Of Access Replacer はこれを置き換えて,ログイン画面のスクリーンショットが取れるようにするツールならしい.

まとめ

このようにパスワードがリセットされると,リセットされたユーザーとしてその Windows にログインできることになって,たとえばブラウザに保持されている個人情報が悪用される可能性がある (というかパスワードが保存されている Chrome が起動されてしまえば,やりたい放題?).結局 HDD まるごと暗号化するか,もしくは手放す前に HDD をきっちり消去するのが賢明.