注册表操作!!!!~~~~~~~~~~

heroqxn 2003-10-20 03:51:09
如何统计注册表下某一项有多少子键?
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziqing 2003-10-20
  • 打赏
  • 举报
回复
同意楼上的楼上!!!
hthunter 2003-10-20
  • 打赏
  • 举报
回复
好办法
WWWWA 2003-10-20
  • 打赏
  • 举报
回复
var
r: TRegistry;i,L:integer;
begin
r := TRegistry.Create;
r.RootKey := HKEY_LOCAL_MACHINE;
r.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);
r.GetkeyNames(Memo1.Lines);
showmessage(inttostr(memo1.Lines.Count-1));
功能: 执行BAT批处理脚本A,去掉桌面快捷方式图标上的箭头。 执行BAT批处理脚本B, 还原成操作系统桌面图标默认带箭头的状态。 去箭头 或者 还原箭头 两个脚本都能顺带解决其他方法导致的后遗症问题。 其他方法导致的后遗症问题是指下面这两种后遗症。 任务栏被锁定, 快捷方式图标的箭头变黑块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 特点: 1.无后遗症。 2.实现桌面图标在视觉上毫无污染的境界。可以通过放大镜程序任意等级放大检测,不会发现任何污染。 3.使用了一个自己定制的特殊图标文件作为箭头图标,除此之外不给系统添加其他任何文件。 4.明文批处理,无毒无木马,避免了EXE类程序骑马携毒的嫌疑。 5.一次运行,一次解决,立即生效,无需重启动。根治病患,后顾无忧。不使用自启动,无额外资源消耗。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 版本: 脚本和操作系统是32位或者64位毫无关系。 如果谁在这个问题上还特意故弄玄虚扯上64位系统 那就纯属扯淡。 不过因为图标缓存文件涉及具体路径,所以不同系统会有差别, 最早脚本是基于Win7制作,后来添加WinXP版本。 使用其他系统如果发现路径有差别的话,可以自行修改制作成针对其他系统的脚本。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 缺点: 我设置了障碍,需要虚拟分 3分。 其实脚本并不复杂,如果仔细阅读肯定能自己照样子做出来。 我也不缺分,分对我也不重要。我是支持有能力的用户自己去完成的。 设置3分,只是稍微提高了一点获取门槛,不想被别人随意照搬,然后到处乱发。 脚本和所需资源是早在2014年3月就已完成制作。 上传CSDN时是 2017年2月2日。 之所以上传这东西,因为我发现都到了2017年, 结果去网络上搜索,还是没有彻底解决这个问题的案例。 到处都是照搬照抄那些有后遗症或者不彻底的方案。 如果你能看懂 甚至能按照描述做出来 但还是来下载, 这我当做是对我过去付出的认可 以及 尊重吧。 ------------------------------------------------------------------------------------------------------------------------ 脚本过程 1.强制修改注册表,这样可以修复其他方法导致的锁任务栏这个后遗症。 其实这个强制修改注册表也只是返回到操作系统最原始的样子,可以算作还原吧。 2.复制自制的 视觉透明 数据非透明的图标文件,复制到系统目录下。 3.修改注册表,把快捷方式的箭头图标文件指向自制的特殊图标文件。 4.结束explorer进程。 5.清除图标缓存文件(需要先改属性)。 6.重新启动explorer进程。 ------------------------------------------------------------------------------------------------------------------------ 已经不记得从什么时候开始使用没有箭头的快捷方式图标了。 自己第一次遇到快捷方式图标问题(箭头图标变黑块)是在2013年10月份, 当时并没太在意,只是通过搜索网络找了个普通办法解决了。 但站在现在的位置看当初,那应该是一个临时的处理办法,并不是根治问题的方法。 真正重视并打算弄明白并解决这个问题 是在2014年3月17日到21日的那一段时间。 当时的过程当然是先搜索网络,查看测试当时能找到很多已知的方案, 这是捷径,即站在前人的肩膀上快速了解问题, 掌握大家所利用分的方法,因为里面很可能就包含最终正确方案的一部分。 测试了见过的很多方法,都是先惊喜 最后失望,因为都有问题,不能圆满解决。 还有就是 这卫士 那管家 之类的提供的方法, 应该说这些工具的方案也经历过不同版本,网上见到过评价其导致其他问题。 卫士管家这类工具 那时候我已经很反感了, 早已看透这类东西,所以那时候就已经不用这类东西了。 了解发现 卫士管家这类 他们当然不会直白的使用明文脚本, 而是编译后的程序,有的还不是一次彻底解决问题,需要每次启动后调用一次。 除了卫士管家这类东西之外,那时候网络上已经出现了单独的工具,不少都是挂马的。 虽然能搜到很多,但没有发现能彻底解决的方法。但大体思路已经很清晰, 大家的办法也很相近,只有自己来做才能按照自己的需求彻底解决问题。 其实问题并不算复杂,早期大家的办法不成熟 有后遗症。 后期大家总算摸到门了,但陷在了无尽的尝试和寻找可用的自带图标之中。 然而自带的图标要么是绝对的透明,要么就是有像素的图标, 自带图标不管其像素多少多大,那都是污染。 系统对快捷方式图标的处理方法很特殊,还涉及到图标缓存, 桌面快捷方式的图标是箭头图标和原始快捷方式图标合成的新图标。 有污染的图标自然不是理想的代替箭头的图标。 而系统自带的透明图标会带来黑方块遮挡这个后遗症。 猜测用透明图标的话,在某一特定时刻系统会检测到异常, 然后就用了全黑图标代替透明图标。总之透明图标不能用。 另外检测黑块问题其实不用重新启动系统去检测,注销后再登陆就可以验证是否有问题。 操作系统是机器,跑的是程序,它对透明图标的判断标准当然是绝对的数据标准,不是我们的视觉标准。 所以操作系统检测出透明图标然后用黑块图标替换,这种透明一定是数据级别的绝对透明。 举个不见得完全正确的例子 比如0代表透明,255代表单一颜色的最大值,那么导致黑块的透明图标一定是0这一级别的数据。 而我们人的视觉并不敏锐,如果0代表透明,那么对我们来说1也是透明,甚至10也可能是透明。 但对于操作系统来说1或者10这和透明就毫无关系了,如果有这样的图标 自然就不会惹上黑块这个后遗症。 但操作系统中不会有这种看起来是透明 实际上 即数据上来说并非彻底透明的 毫无意义的图标, 这也是为什么大家都在找系统中可用来替代的图标,但绝对不会有结果的原因。 所以方案只能是自己动手做一个符合自己标准的视觉透明数据不透明的图标。 自制视觉透明图标,基础是一个完全透明的图标, 为了尽可能减少复杂度,只在这个透明图标上添加一个像素点即可。 初期还曾尝试不同颜色的像素点,甚至考虑绝大多数用户桌面的颜色,还有像素点的位置, 但实际上这些并不影响结果,因为最终视觉上不会看到任何像素。 但考虑到理论基础还是选择了中间色 灰色 作为像素点的颜色。 然后利用软件对像素点做平滑处理,模糊处理,高斯模糊处理。 经过这一系列处理后就形成了肉眼看是完全透明的图标, 但理论上是有颜色的图标,这样Windows转换图标时就不会触发黑块问题。 ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------ 早期出现的有缺陷的方法 方法一 核心语句是清除注册表如下注册表项,此法后遗症是任务栏被锁,不能向任务栏添加快捷方式。 reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f reg delete "HKEY_CLASSES_ROOT\piffile" /v IsShortcut /f 此法虽有不同形式,但无论是BAT命令还是其他不同高级语言编译的EXE,本质上是一样的。 使用高级语言只是换个形式使用命令, 其目的 一是隐藏代码不想公开,还有就是目的不纯 涉及灰色产业链,挂马带毒。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 方法二 是用一个透明图标替换小箭头图标,此法后遗症是导致原来小箭头的图标变成黑块 核心语句 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ Shell Icons" /v 29 /d "%systemroot%\system32\shell32.dll,50" /t reg_sz /f 核心图标文件shell32.dll,图标编号50 此法注销或重启动后会发现快捷方式上的黑块。清理图标缓存文件后重启explorer进程可以暂时解决问题。 所以使用此法的方案往往还会利用自启动,每次进入系统后都执行一次清理图标缓存和重启资源管理器进程。 其实系统里还有其他透明图标,当然 用的话也有后遗症 %SystemRoot%\System32\ImageRes.dll 的第113和115两个图标都是透明图标, 因为是透明图标所以没有污迹,但同样注销后有黑块。 此法的核心是利用一个绝对的透明图标替换箭头图标, 无论使用哪个透明图标都可以归结为此类方法,结果也都是一样,会导致黑块问题。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 方法三 替换小箭头图标,选择了图标资源文件imageres.dll,内部196号图标 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll,196" /t reg_sz /f 缺点是 快捷方式图标会染上污迹,脏兮兮 196号图标,并不是全透明无像素图标,它是类似于一道下划线的图标,所以就有了污迹的效果。 196,是1条线。 197,是2条线。 198,是3条线。 使用系统自带的任何其他非透明图标代替箭头图标,都可以归结为此类方法。 虽然结果会有差别,但充其量也就是图标污染程度不同这样的差别。 解决快捷方式箭头问题所需要的图标是视觉上透明,数据级别不透明的图标。 操作系统内设计一个有像素的图标自然是为了看得到,而不是看不到, 对操作系统来说设计那样的图标没有意义,所以操作系统不会自带那样的图标, 因此在操作系统自带的图标范围内找答案不会有结果。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧