最近在写一个修改注册表的驱动,只是为了好玩,也算是一个恶搞驱动吧!
遇到一个问题,花了我差不多两天的时间的,详情往下看……
写这篇文章,为了记住这个教训,一个提供一种纠错的思路——无知真可怕
我想修改注册表[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,奇怪的是修改成功了