發新話題

[分享] Windows Vista拒絕罷工系列3─忘記管理員密碼?沒問題!

Windows Vista拒絕罷工系列3─忘記管理員密碼?沒問題!

訪客無法瀏覽此圖片或連結,請先 註冊登入會員 是由近40位微軟MVP和MCT、還有微軟員工組成,旨在宣傳微軟IT Pro技術

現在,Windows Vista用戶再也不需要借助ERD Commander、O&O BlueCon或者Offline NT Password & Registry Editor等「外援」的幫助,只需一張Windows Vista的安裝光盤,就可以「自力更生」重設管理員帳戶密碼。

1.一個工具包輕鬆搞定管理員密碼

由於本文所涉及的原理和操作相對比較複雜,為了照顧初學者朋友,筆者特地製作了一個工具包,只有5KB大小(訪客無法瀏覽此圖片或連結,請先 註冊登入會員 )。

(1) 首先確保您的Windows Vista安裝在C盤,如果安裝在別的分區,請不要使用該工具包,而直接查看本文的後面部分。
(2) 請將本工具包解壓縮到軟盤,然後將這張軟盤插入故障計算機。
(3) 利用Windows Vista安裝光盤引導系統進入「系統恢復選項」,並單擊其上的「命令提示符」,請參考訪客無法瀏覽此圖片或連結,請先 註冊登入會員
(4) 在命令提示符下運行「A:\StartMe」,如果命令結果沒有報錯,連續兩次重啟計算機到登錄界面。
(5) 第二次啟動到登錄界面時,點擊Test帳戶名即可登錄,然後就可以重設原來帳戶的密碼了。
(6) 打開註冊表編輯器,刪除以下註冊表子鍵即可:
HKLM\SYSTEM\CurrentControlSet\Services\AddUser

2.原理描述

這個工具包裡包含兩個批處理文件和一個srvany.exe程序,作用如下:
‧ AddUser.bat批處理文件:目的是在Windows Vista系統裡創建一個管理員帳戶Test,而且密碼是空。
‧ StartMe.bat批處理文件:目的是把AddUser.bat文件安裝為一個服務,該服務是以LocalSystem身份啟動的,這樣在開機登錄之前,就已經執行AddUser.bat,以便新建Test帳戶。
‧ srvany.exe程序:取自Windows Server 2003 Resource Kit Tools工具包,可以在微軟官方網站上自由下載。
看到這裡,相信很多朋友已經明白,原來這個方法取自筆者以前寫過的一篇文章訪客無法瀏覽此圖片或連結,請先 註冊登入會員 。但是還是有區別的,因為Windows Vista系統不支持直接把批處理文件安裝為服務,否則服務會啟動失敗。所以必須借助srvany.exe程序和SCM(服務控制管理器)打交道,才能確保成功。
AddUser.bat批處理文件的內容如下,這和訪客無法瀏覽此圖片或連結,請先 註冊登入會員 沒有區別,此處不再贅述。

QUOTE:
net user test /add
net localgroup administrators test /add


StartMe.bat批處理文件的內容如下:

QUOTE:
copy a:\srvany.exe c:\
copy a:\adduser.bat c:\
reg load HKLM\AddUser_SYSTEM C:\WINDOWS\system32\config\SYSTEM
c:\windows\system32\sc create AddUser Type= own Start= auto Binpath= C:\srvany.exe Obj= LocalSystem
reg add HKLM\SYSTEM\CurrentControlSet\services\AddUser\Parameters /v Application /t REG_SZ /d c:\AddUser.bat
reg copy HKLM\SYSTEM\CurrentControlSet\services\AddUser HKLM\AddUser_SYSTEM\ControlSet001\services\AddUser /s /f
reg unload HKLM\AddUser_SYSTEM


(1) 最上面的兩行copy命令沒有什麼可說的,就是為了把srvany.exe和adduser.bat複製到C盤根目錄下。

(2) 而 「reg load HKLM\AddUser_SYSTEM C:\WINDOWS\system32\config\SYSTEM」命令,其目的是為了把C:\WINDOWS\system32\config\SYSTEM配置單元文件加載到註冊表的HKLM\AddUser_SYSTEM分支。
提示
為什麼要加載C:\WINDOWS\system32\config\SYSTEM配置單元?
原來Windows XP安裝光盤的「系統恢復選項」,實際上是一個Windows PE環境。該Windows PE在物理內存裡劃分出一個32MB的空間作為虛擬的內存磁盤(RamDisk),盤符是X:。該Windows PE加載的註冊表,實際上對應於X:\WINDOWS\system32\config目錄下的配置單元文件。這可以用Process Explorer來驗證,只需查看SYSTEM進程的句柄,即可發現所打開的註冊表配置單元位於內存磁盤(RamDisk),如圖1所示。


所以,必須把Windows Vista所用的註冊表配置單元加載進來,才能最終生效。如果Windows Vista安裝在別的分區,則需要把「reg load」命令中的C:改成合適的盤符。

(3) 對於這句命令「c:\windows\system32\sc create AddUser Type= own Start= auto Binpath= C:\srvany.exe Obj= LocalSystem」,其目的是借助系統自帶的SC命令在系統中新建一個AddUser服務,其可執行文件指向srvany.exe文件,運行身份是LocalSystem。
提示
由於「系統恢復選項」的Windows PE環境,其Path環境變量並不包含Windows Vista的安裝目錄,所以必須提供SC命令所在的詳細路徑(此處假設Windows Vista安裝在C盤,請根據實際情況修改該命令)。SC命令的實質是在HKLM\SYSTEM\CurrentControlSet\services下添加AddUser服務的子鍵。

(4) 「reg add HKLM\SYSTEM\CurrentControlSet\services\AddUser\Parameters /v Application /t REG_SZ /d c:\AddUser.bat」這個命令的作用是在服務AddUser的註冊表子鍵下添加相應的參數,讓SCM(服務控制器)知道實際上要啟動c:\AddUser.bat批處理腳本文件。
注意
以上兩條命令對註冊表的修改,實際上是作用在X:\WINDOWS\system32\config\SYSTEM配置單元文件上,由於該配置單元保存在內存虛擬磁盤上,而非真正保存在Windows Vista所用的配置單元文件。所以我們需要把註冊表鍵值複製到C:\WINDOWS\system32\config\SYSTEM配置單元(現在已經加載到HKLM\AddUser_SYSTEM註冊表分支)。

(5) 「reg copy HKLM\SYSTEM\CurrentControlSet\services\AddUser HKLM\AddUser_SYSTEM\ControlSet001\services\AddUser /s /f」命令的作用就是為了複製AddUser的註冊表鍵值到真正需要的地方。

(6) 「reg unload HKLM\AddUser_SYSTEM」命令則是卸載C:\WINDOWS\system32\config\SYSTEM配置單元。

運行StartMe.bat腳本後,系統就會自動添加一個AddUser服務,該服務會在登錄之前在系統中創建一個Test管理員帳戶,以便我們順利地重設管理員密碼。

3.寫在後面

這個方法雖然簡單,但是當初測試時,筆者卻走了不少彎路,這裡簡單地加以總結:

(1) 為什麼我們可以在「系統恢復選項」下為所欲為?
在Windows Vista下時間長了,習慣了UAC環境,每運行一個管理任務,都會習慣等待確認權限提升對話框。但是在「系統恢復選項」下,我們可以隨意通過命令提示符啟動大部分應用程序,包括記事本、註冊表編輯器等,除了Windows Shell程序不能運行外,幾乎絕大多數的應用程序和腳本都能直接順利運行。這是為什麼?
原來在「系統恢復選項」下,我們是以LocalSystem身份運行的,難怪可以至高無上的權限對系統進行配置!這裡可以用「Whoami /all」命令驗證一下,如下圖所示。


(2) 為什麼不直接運行net user和net localgroup命令?
看了前面部分後,您可能一直存在一個疑問,為什麼不直接在命令提示符窗口運行net user和net localgroup命令,反正我們現在是LocalSystem權限,而非得繞那麼大一個圈子,借助AddUser腳本在系統中添加一個服務,達到「曲線救國」的目的?
原來正如前面所述,「系統恢復選項」的Windows PE環境,所加載的SAM配置單元文件位於X:\WINDOWS\system32\config目錄下,而非C:\WINDOWS\system32\config目錄下。所以net命令的結果保存在X:\WINDOWS\system32\config\SAM配置文件裡,沒有真正生效!
就算加載C:\WINDOWS\system32\config目錄下的SAM配置單元,並且採用帳戶克隆的方法複製註冊表的F和V鍵值,還是無法生效。

(3) 為什麼不把X:\WINDOWS\system32\config\下的SAM文件直接複製到C:\WINDOWS\system32\config目錄下?
這實際上類似於在Windows 2000/XP下把C:\WINDOWS\repair目錄下的SAM副本複製到C:\WINDOWS\system32\config目錄下。結果會具有兩個空密碼的帳戶Administrator和Guest。
然而這種方法並不推薦,因為通常並不能僅僅拷貝SAM配置單元文件,還必須同步拷貝SYSTEM、SOFTWARE等其他配置單元文件,這樣會可能導致很多系統和軟硬件配置信息丟失,損失更大。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。