今天端午节,公司放了一天假,正好趁这个时间,就来整理一下自己的学习笔记…………
“C#快速定位注册表” 也是我最近在弄一项程序时,遇到的一个大难题,从网上找好了好久,从QQ群里问了N多人也没有好的解决办法,所以一直很烦…………
昨天,还是为了整那个程序忙到很晚,一直往返于 MSND 、 CSND 和测试注册表中,还是无果…………
但也并不是徒劳无功…………
我无意中发现,注册表每次打开后关闭时,再打开注册表,他都会定位到你前次关闭时的那个表项, 测试多次后,证实了我的猜想,这就说明,肯定在什么地方记录了你每次关闭注册表时打开最后项的位置,然后在下次打开这个注册表时,就可以快速定位到你上次打开注册表而关闭时的那项(当然现在还只是我的猜想而以)。
为了证实我的猜想,我找了有关注册表的一些资料
从上面可知,用户每运行一个应用程序,注册表都提供应用程序信息给操作系统。我在想,那注册表自己会不会也对自己记录了相关的信息呢,答案是肯定的。我在注册表中找到注册表对自己记录的一些相关信息,
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Applets/Regedit]
"View"=hex:2c,00,00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,/
ff,ff,ff,ff,ff,ff,51,01,00,00,f6,01,00,00,9e,04,00,00,f4,03,00,00,27,01,00,/
00,78,00,00,00,78,00,00,00,20,01,00,00,01,00,00,00
"FindFlags"=dword:00000006
"LastKey"="我的电脑[url=file://HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Applets//Regedit]//HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Applets//Regedit[/url]"
从LastKey 中,我猜想这就是我要的答案了,LastKey的键值就是记录了每次关闭注册表时打开最后项的位置。为了提供更有立的证据,我用C# 写了一个测试软件,我分别四次打开注册表再关闭了注册表
用软件得到了下面的 四次不同的结果
我的电脑/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Applets/SysTray
我的电脑/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Group Policy
我的电脑/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/ShellServiceObjectDelayLoad
我的电脑/HKEY_CURRENT_USER/Software/Microsoft/Windows Script Host
因此我更加确定我的猜想。
说到这里,基本上我们可以确定了《快速定位注册表的》一个思路,---当我们要定位到注册表的哪项时,首先把
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Applets/Regedit]下在的 LastKey 的键值改为我们想要定位的地方,例如,我想定位到启动项,我就要把LastKey 的键值改为 我的电脑[url=file:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]//HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run[/url] 再启动注册表,那他就会速打开我们指定的注册表项!
好了,到这里,我想大家基本上明白了。
当然,我知道肯定有更好的办法,来快速定位注册表,只是我没有找到。如果你有更好的办法,请麻烦发一份给我,在这里感激不尽……………………
--------文章转载请注明阿龙
最后作品