最近在寫一個修改註冊表的驅動,只是爲了好玩,也算是一個惡搞驅動吧!
遇到一個問題,花了我差不多兩天的時間的,詳情往下看……
寫這篇文章,爲了記住這個教訓,一個提供一種糾錯的思路——無知真可怕
我想修改註冊表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
並且添加一個鍵值,鍵值名稱和鍵值如下:
"NoDriveTypeAutoRun"=dword:000000ff
寫好整個驅動程序,編譯無誤,加載運行後,其他的修改項沒發現什麼問題,但是這個項總是出問題。
問題:鍵值名稱可以添加,但是想把鍵值編程0xff(255),總是顯示
爲如圖1:
圖1
我以爲是我的程序出問題了,一步一步調試。剛開始以爲是字符串初始化出錯,或者是函數使用錯誤,最後這些因素都被排除了。
於是我想了一個測試方案(結果就不截圖了):
測試方法一、把鍵值名稱換成其他字符(REG_DWORD_TEST),鍵值不變(255)成功修改,可以成功添加 鍵值名稱:REG_DWORD_TEST,鍵值:255
測試方法二、鍵值名稱換不變NoDriveTypeAutoRun,鍵值改變(1000)最後成功修改,可以成功添加 鍵值名稱:NoDriveTypeAutoRun,鍵值:1000
測試方法三、將一下內容寫在一個txt文檔,
//---------------------------------分割線---------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDriveTypeAutoRun"=dword:000000ff
//---------------------------------分割線---------------------------------------------------------------
然後把這個文件命名爲RegTest.reg ,雙擊運行 猜猜結果會怎樣???如圖2
圖2
這足以說明一個問題,windows不可以將"NoDriveTypeAutoRun"的鍵值設置成:0x000000ff(255),如果設置成0xff(255),系統自動換成0xb5(181).
至於爲什麼,我也不清楚,待以後研究。如果看到這篇文章的你知道原因,請你一定要告訴我,先謝謝了
先結束explorer.exe,再運行explorer.exe,最後運行RegTest.reg,奇怪的是修改成功了