首页
社区
课程
招聘
[旧帖] 修改CLSID相关的注册表求解 0.00雪花
发表于: 2011-3-21 12:52 6281

[旧帖] 修改CLSID相关的注册表求解 0.00雪花

2011-3-21 12:52
6281
貌似没在本版见到问这种问题的,也不知道发在这版是不是合适,反正我是认准了发在这肯定会比发到别的网站先得到正确答案...所以很忐忑的就来发帖了..希望能得到大家的帮助..问题虽然很幼稚.但不能解决的原因也不能全赖我懒.主要是google有时候也不是万能的..

目的: 通过修改注册表来修改桌面右键菜单, 增加我需要的功能.
(只采取纯粹的注册表方法,软件修改法以及借助非系统文件等都无视.)
在网上搜到了一个相关的脚本, 已经能增加一个菜单, 但是只能增加一个菜单, 而且在实验过程中遇到了更多不理解的问题, 那个批处理脚本被我修改如下以用来测试:
@echo on

goto _r1

:_r1
set xclsid={00000000-6bba-0000-0000-000000000002}
set xname="Xcmd-test"
set xcmdline2=\"cmd.exe\"
set xcmdline1=/k echo Current user is : %%username%%

set next=_r2
echo "r1"-%xname%-%xclsid% is running
goto _function

:_r2
set xclsid={00000000-6bba-0000-0000-000000000003}
set xname="关机"
set xcmdline2=\"shutdown.exe\"
set xcmdline1=-s -f -t 0

set next=_exit
echo "r2"-%xname%-%xclsid% is running
goto _function

:_function
set regpath=HKEY_CLASSES_ROOT
:: set regpath=HKEY_CURRENT_USER\Software\Classes
:: 非管理员用户可在此分支写入此注册表达到添加菜单的目的, 但是管理员用户运行脚本后会在HKCR下同步生成多余键, 清理很麻烦, 故默认不使用此分支.
reg delete %regpath%\CLSID\%xclsid% /f
reg delete %regpath%\Directory\Background\shellex\ContextMenuHandlers\%xclsid% /f
reg add %regpath%\CLSID\%xclsid%\InProcServer32 /ve /t reg_expand_sz /d %SystemRoot%\system32\shdocvw.dll /f
reg add %regpath%\CLSID\%xclsid%\Instance /v CLSID /t reg_sz /d {3f454f0e-42ae-4d7c-8ea3-328250d6e272} /f
reg add %regpath%\CLSID\%xclsid%\Instance\InitPropertyBag /v Param2 /t reg_sz /d "%xcmdline2%" /f
reg add %regpath%\CLSID\%xclsid%\Instance\InitPropertyBag /v Param1 /t reg_sz /d "%xcmdline1%" /f
reg add %regpath%\CLSID\%xclsid%\Instance\InitPropertyBag /v command /t reg_sz /d "%xname%" /f
reg add %regpath%\CLSID\%xclsid%\Instance\InitPropertyBag /v method /t reg_sz /d ShellExecute /f
reg add %regpath%\CLSID\%xclsid%\Instance\InitPropertyBag /v CLSID /t reg_sz /d {13709620-C279-11CE-A49E-444553540000} /f
reg add %regpath%\Directory\Background\shellex\ContextMenuHandlers\%xclsid% /f

echo @echo. >> %~n0-del.bat
echo @echo del [ %xname% ] ? >> %~n0-del.bat
echo @pause ^> nul >> %~n0-del.bat
echo reg delete %regpath%\CLSID\%xclsid% /f >> %~n0-del.bat
echo reg delete %regpath%\Directory\Background\shellex\ContextMenuHandlers\%xclsid% /f >> %~n0-del.bat
goto %next%

:_exit
pause
exit


遇到问题:
1.理论上写了两个右键菜单: "Xcmd-test" 和 "关机", 但是桌面点右键发现只显示一个右键菜单. 为啥只显示一个呢?此问题求详解, 猜测的不要, 最好能告诉我一下{3f454f0e-42ae-4d7c-8ea3-328250d6e272}和{13709620-C279-11CE-A49E-444553540000}与什么功能相关.
2.运行脚本后会生成一个用来删除被改写的注册表的批处理, 批处理的第一步是删除 "Xcmd-test" , 删除之后直接关闭cmd窗口, 再到桌面点右键就会发现 "关机" 菜单项已经被显示出来了. 点了之后会直接关机的. 所以先不要点. 到注册表里手工把这个菜单的命令行改成 rundll32.exe shell32.dll,#60
( 或者直接用del脚本先删除刚才写的注册表, 然后把脚本开始那行goto _r1 改成 goto _r2 , 再将 :_r2 部分代码改成 set xcmdline2=\"rundll32.exe\" 和 set xcmdline1= shell32.dll,#60 ) 这样就会调用系统关机对话框, 但是选了 "关机" 之后系统没有反应, 并不会关机. 后来发现就算直接运行 rundll32.exe shell32.dll,#60 来关机也是无效的. 我系统是Win2003-ent-sp2补丁随时更新的. 莫非别的win系统用这个调用的对话框也不能关机么? 求一个可以关机的调用系统关机对话框的命令行.
3.求生成更多的桌面右键菜单, 并能将多个添加的菜单在右键里同时显示出来的注册表写入方法.(只限"桌面-右键"菜单, 写file和folder键上的不要. 希望会有一个能无限增加桌面右键菜单的CLSID被发现-__-!!)

像我这样只能显示一个很痛苦啊, 先谢谢各位帮俺的大哥大姐啊...

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 68
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发...人工的..
2011-3-24 20:02
0
游客
登录 | 注册 方可回帖
返回
//