分享:打开注册表编辑器并定位到指定路径的思路,该如何处理

分享:打开注册表编辑器并定位到指定路径的思路
这次我给大家分享的是打开注册表编辑器并定位到指定路径的思路。

注册表编辑器有一个记忆功能,比如我们展开了HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer,关闭并打开注册表编辑器,出现的还是我们上次展开的位置。这个记忆功能把展开的路径保存在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit里名称为LastKey的Value里。我们可以利用这个记忆功能来实现定位Key功能。

比如在注册表编辑器未运行的时候,把LastKey的数据设为我的电脑\HKEY_LOCAL_MACHINE\SOFTWARE。然后打开注册表编辑器,就会定位到HKEY_LOCAL_MACHINE\SOFTWARE。

至于定位指定的Value,首先按照上面的描述定位到Value所在的Key,然后让注册表编辑器的ListView获得焦点,给它发消息。先发送LVM_GETITEMCOUNT消息知道总共有几个Item,然后用For....Next获取每个Item的文字,获取方法是给ListView发送LVM_GETITEMTEXT消息,SendMessage的lParam参数是LVITEM结构,但不能直接发送,因为ListView是注册表编辑器的,不是自己程序里的,所以需要GetWindowThreadProcessId、OpenProcess、VirtualAllocEx、WriteProcessMemory,然后再SendMessage、ReadProcessMemory、VirtualFreeEx、CloseHandle。然后需要用StrConv函数把获取到的字符串转为UNICODE。和你想要定位的ValueName进行对比,如果匹配,就选中那个Item,选中也需要GetWindowThreadProcessId、OpenProcess、VirtualAllocEx、WriteProcessMemory,SendMessage、VirtualFreeEx、CloseHandle。好了,定位Key及Value的思路讲完了。代码不提供,请自己实践。


------解决方案--------------------
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
------解决方案--------------------
定位路径这个容易实现,定位Value有点难度
------解决方案--------------------
up~
------解决方案--------------------
帮顶...
------解决方案--------------------
帮顶...
------解决方案--------------------
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
------解决方案--------------------
good luck
------解决方案--------------------
同意楼主,regmon中可能就是这样实现的
------解决方案--------------------
路过 jf
------解决方案--------------------
Ding .......