2016年2月9日 星期二

使用Regedit.exe修改非本機的登入檔

剛剛做了一件蠢事,為了要做API Hook實驗,拿自己的電腦主機來做實驗,導致系統無法開進Windows桌面。
原因是修改了HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\下的AppInit_DLLs機碼,導致開機無法進去Windows桌面,系統又無法進行自我修復功能,原本想說是不是主機出問題,結果想想該不會做實驗所導致的問題,後來拿Winpe USB碟進到Winpe下將登錄檔改回原本的設定後才正常,為了找登錄檔的機碼存放位置花了點時間,筆者在這裡紀錄一下如何修改登錄檔,以免未來忘了。

以下所列範例是在Windows 7上修改Winpe登錄檔,其基本動作都是一樣,如有問題再提問。

Step 1. 開啟Regedit.exe。

Step 2. 載入非本機的登錄檔。
(1) 先點選HKEY_LOCAL_MACHINE機碼。

(2) 點選檔案、載入登錄區。

Step 3. 選擇C:\winpe_x86\mount\Windows\System32\config\下的 SOFTWARE檔案。

這裡的需特別注意以下幾點:
1. 路徑 C:\winpe_x86\mount\Windows\System32\config\ 是筆者機器上Winpe登錄檔機碼存放的路徑,請勿按照以上路徑設定,請自行查看自己主機登錄檔存放的路徑或至 C:\Windows\System32\config\ 查看內容。
2. 這裡選SOFTWARE檔案的原因是AppInit_DLLs機碼在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\底下,因此選擇SOFTWARE檔案修改。
3. 讀者如要修改HKEY_LOCAL_MACHINE底下其他機碼,請自行載入SECURITY、 SYSTEM、SAM機碼進行查看。
4. 欲修改DEFAULT機碼,請自行對應至 HKEY_USERS 機碼底下 .DEFAULT

輸入暫存機碼的名字 TempSoftware。


Step 4. 到HKEY_LOCAL_MACHINE\TempSoftware\Microsoft\Windows NT\CurrentVersion\Windows\下,將AppInit_DLLs、LoadAppInit_DLLs機碼修正回來。
修正前

修正後

Step 5. 解除載入登錄區,最後重開機即可正常登入至Windows桌面。