无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 17632|回复: 57
打印 上一主题 下一主题

[已解决] 注册表里怎么使用相对路径?比如:%HOMEDRIVE%这种

  [复制链接]
跳转到指定楼层
1#
发表于 2016-6-26 09:17:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 netmjwork 于 2016-6-28 09:25 编辑

在网上找了一个添加7z右键的注册表文件,里面路径是绝对路径可以使用,但是替换成 相对路径 就无法使用了,提示“拒绝访问”……
请教在注册表里 %HOMEDRIVE% 这种相对路径如何使用?谢谢!

如下的 c: 换成 %%HOMEDRIVE%% 就无法运行(也尝试 %HOMEDRIVE%都不行),提示“拒绝访问”,但如果是 c: 的话可以正常运行。
[HKEY_CLASSES_ROOT\7-Zip.zip\shell\open\command]
@="\" c: \\7zip\\7zFM.exe\" \"%1\""

[HKEY_CLASSES_ROOT\7-Zip.zip\shell\open\command]
@="\"%%HOMEDRIVE%%\\7zip\\7zFM.exe\" \"%1\""
2#
发表于 2016-6-26 09:26:35 | 只看该作者
本帖最后由 窄口牛 于 2016-6-26 09:33 编辑

%SystemDrive%1.bat=c:\1.bat

另:set >path.txt
path.txt即可看到系统所有有效环境变量
回复

使用道具 举报

3#
发表于 2016-6-26 09:52:02 | 只看该作者
本帖最后由 pogua007 于 2016-6-26 09:56 编辑

诶,你怎么问这样的问题。这个问题确实比较古怪,解决方法更是古怪的非常没有道理,使用也非常不方便。
如果要使用变量作为command的路径,需要@值的数据类型是可扩充的字符串(REG_EXPAND_SZ),还有你的语法也不对,一般的系统变量调用都是一个%,除了批处理文件中,因为cmd解释器的原因,要两个%。
知道这些解决也是很麻烦的,
一、注册表编辑器、vbs、reg命令都是没有办法修改数据类型的;
二、默认值是没有办法删除的;
三、可扩充的字符串(REG_EXPAND_SZ)转换是也是一个问题,REG_EXPAND_SZ值在reg文件中是很长的二进制数据,因为用的少也没有找转换的办法,目前的办法只有在注册表编辑器中设置好数值,然后导出为reg文件。
如你例子中的解决办法就是,在你要改的项下,新建一个可扩充的字符串(REG_EXPAND_SZ)值,然后设置数据为,你需要的数据,比如你7z的路径上面,就应该写为%SystemDrive%\7-Zip\7zFM.exe "%1",然后导出注册表文件,再修改注册表文件,先加一行删除项的。然后删除默认值,把你后来加的可扩充的字符串值,改名为@。然后导入注册表文件。具体注册表内容如下:
  1. Windows Registry Editor Version 5.00

  2. [-HKEY_CLASSES_ROOT\7-Zip.rar\shell\open\command]

  3. [HKEY_CLASSES_ROOT\7-Zip.rar\shell\open\command]
  4. @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,44,00,72,00,69,00,76,00,65,\
  5.   00,25,00,5c,00,37,00,2d,00,5a,00,69,00,70,00,5c,00,37,00,7a,00,46,00,4d,00,\
  6.   2e,00,65,00,78,00,65,00,20,00,22,00,25,00,31,00,22,00,00,00
复制代码

目前就这一个办法,我目测一下这个可扩充字符串好象就是16进制文本吗,不过就是知道了也很麻烦。
晕,我写的路径是%SystemDrive%\7-Zip\7zFM.exe,你的是%SystemDrive%\7Zip\7zFM.exe,你要拿去直接测试也会出错,导入之后自己修改吧,你看这也是一个麻烦,不能直接修改值。

点评

您这个方法我用不来,高手可以用~ 是这样的,我想实现: 1、7zip的目录是任意 2、用批处理或VBS实现:运行后自动关联.7z格式的文件,增加“目录式”的右键菜单,“根菜单”是“77zz”(以便区别), 子菜  详情 回复 发表于 2016-6-26 11:15
用的少也没有找转换的办法? 就是ASCII码补00凑双字节的UNICODE编码  发表于 2016-6-26 10:38
回复

使用道具 举报

4#
发表于 2016-6-26 10:34:52 | 只看该作者
本帖最后由 807979023 于 2016-6-26 13:02 编辑

我是先将reg文件转换为批处理,再修改c:为变量%SystemDrive%,最后运行批处理修改注册表。

原reg:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\7-Zip.zip\shell\open\command]
@="\" c: \\7zip\\7zFM.exe\" \"%1\""

转为批处理:
@echo off
reg add "HKCR\7-Zip.zip\shell\open\command" /ve /d "\" c: \7zip\7zFM.exe\" \"%%1\"" /f

修改批处理后运行:
@echo off
reg add "HKCR\7-Zip.zip\shell\open\command" /ve /d "\" %SystemDrive% \7zip\7zFM.exe\" \"%%1\"" /f

点评

您好,好像我要实现的就是您操作实现过的~ 能帮忙看下实现6楼我希望的效果,全部需要几行吗?多谢! 那个我也不知道是不是每项都需要,我只需要我希望的简单效果就行,运行过完整的之后就没法验证了……  详情 回复 发表于 2016-6-26 11:25
多谢分享! 是个好方法,我试下~  详情 回复 发表于 2016-6-26 11:18
你没有指定数据类型?默认还是字符串,不是可扩充的字符串,字符串不能用环境变量的  详情 回复 发表于 2016-6-26 11:00
回复

使用道具 举报

5#
发表于 2016-6-26 11:00:16 | 只看该作者
本帖最后由 pogua007 于 2016-6-26 11:26 编辑
807979023 发表于 2016-6-26 10:34
我是先将reg文件先转换为批处理,再修改c:为变量%SystemDrive%,最后运行批处理修改注册表。

原reg:


你没有指定数据类型?默认还是字符串,不是可扩充的字符串,字符串不能用环境变量的
我试了一下,下面的写法可以
  1. reg add "HKCR\7-Zip.zip\shell\open\command" /ve /t REG_EXPAND_SZ /d "%%systemroot%%\7zip\7zFM.exe "^"%%1^""" /f
复制代码

尼玛,cmd的特殊字符处理真恶心
回复

使用道具 举报

6#
 楼主| 发表于 2016-6-26 11:15:54 | 只看该作者
pogua007 发表于 2016-6-26 09:52
诶,你怎么问这样的问题。这个问题确实比较古怪,解决方法更是古怪的非常没有道理,使用也非常不方便。
如 ...

您这个方法我用不来,高手可以用~

是这样的,我想实现:
1、7zip的目录是任意
2、用批处理或VBS实现:运行后自动关联.7z格式的文件,增加“目录式”的右键菜单,“根菜单”是“77zz”(以便区别),
     子菜单一:对文件形式,命名为“极限压缩为7z”
     子菜单二:对文件形式,且仅仅后缀名是“.7z”的文件时,增加命名为“用7z打开”
     子菜单一:对文件夹、目录形式,命名为“极限压缩为7z”

网上看的代码不能实现“目录式”的菜单,倒是实现了文件和文件夹的右键菜单,还在研究……

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.7z]
@="77zz"

[HKEY_CLASSES_ROOT\77zz]
@="7z Archive"

[HKEY_CLASSES_ROOT\77zz\DefaultIcon]
@="c:\\7zip\\7z.ico"



[HKEY_CLASSES_ROOT\77zz\shell]
@=""
[HKEY_CLASSES_ROOT\77zz\shell\open]
@=""
[HKEY_CLASSES_ROOT\77zz\shell\open\command]
@="\"c:\\7zip\\7zFM.exe\" \"%1\""



[HKEY_CLASSES_ROOT\.7z\shell\Zip]
@="极限压缩为 .7z"
[HKEY_CLASSES_ROOT\.7z\shell\Zip\command]
@="\"c:\\7zip\\7zg.exe\" a -t7z -mx9 \"%1\".7z \"%1\""



[HKEY_CLASSES_ROOT\Folder\shell\7z]
@="极限压缩为 .7z"
[HKEY_CLASSES_ROOT\Folder\shell\7z\command]
@="\"c:\\7zip\\7zg.exe\" a -r -t7z -mx9 \"%1\".7z \"%1\""
回复

使用道具 举报

7#
 楼主| 发表于 2016-6-26 11:18:57 | 只看该作者
807979023 发表于 2016-6-26 10:34
我是先将reg文件先转换为批处理,再修改c:为变量%SystemDrive%,最后运行批处理修改注册表。

原reg:

多谢分享!

是个好方法,我试下~
回复

使用道具 举报

8#
 楼主| 发表于 2016-6-26 11:25:36 | 只看该作者
本帖最后由 netmjwork 于 2016-6-26 11:27 编辑
807979023 发表于 2016-6-26 10:34
我是先将reg文件先转换为批处理,再修改c:为变量%SystemDrive%,最后运行批处理修改注册表。

原reg:


您好,好像我要实现的就是您操作实现过的~

能帮忙看下实现 6楼 我希望的效果,全部需要几行吗?多谢!

那个我也不知道是不是每项都需要,而且无法实现“目录式”的菜单效果,我只需要我希望的简单效果就行,运行过完整的之后就没法验证了……

点评

你到底问的是在注册表的command中使用环境变量,还是问右键菜单增加子菜单。 如果command使用环境变量,必须默认值的类型为REG_EXPAND_SZ。 增加子菜单很难,一般都是加载DLL实现的。  详情 回复 发表于 2016-6-26 12:11
回复

使用道具 举报

9#
发表于 2016-6-26 12:11:09 | 只看该作者
netmjwork 发表于 2016-6-26 11:25
您好,好像我要实现的就是您操作实现过的~

能帮忙看下实现 6楼 我希望的效果,全部需要几行吗?多谢 ...

你到底问的是在注册表的command中使用环境变量,还是问右键菜单增加子菜单。
如果command使用环境变量,必须默认值的类型为REG_EXPAND_SZ。
增加子菜单很难,一般都是加载DLL实现的。

点评

想实现6楼说的效果,包括子菜单 如果子菜单还需要dll实现那就算了,可能太麻烦  详情 回复 发表于 2016-6-26 12:31
回复

使用道具 举报

10#
发表于 2016-6-26 12:20:46 来自手机 | 只看该作者
建议你把rar的右键导出来,修改了打回去试试。

点评

关键是不知道导哪些项……  详情 回复 发表于 2016-6-26 12:33
回复

使用道具 举报

11#
 楼主| 发表于 2016-6-26 12:31:02 | 只看该作者
pogua007 发表于 2016-6-26 12:11
你到底问的是在注册表的command中使用环境变量,还是问右键菜单增加子菜单。
如果command使用环境变量, ...

想实现6楼说的效果,包括子菜单
如果子菜单还需要dll实现那就算了,可能太麻烦
回复

使用道具 举报

12#
 楼主| 发表于 2016-6-26 12:33:00 | 只看该作者
窄口牛 发表于 2016-6-26 12:20
建议你把rar的右键导出来,修改了打回去试试。

关键是不知道导哪些项……
回复

使用道具 举报

13#
发表于 2016-6-26 12:59:30 | 只看该作者
pogua007说得对,数据类型是字符串的确不能用环境变量,虽然能导入,实际使用时出錯。
下面是使用成功的右键调用rar,只是文件和文件夹右键调用rar。
与你的要求不相同,只能供参考。

@echo off
reg add "HKCR\*\shell\winrar" /ve /d "打开winrar" /f
reg add "HKCR\*\shell\winrar\command" /ve /t REG_EXPAND_SZ /d "%%ProgramFiles%%\winrar\WinRAR.exe" /f
reg add "HKCR\Folder\shell\winrar" /ve /d "打开winrar" /f
reg add "HKCR\Folder\shell\winrar\command" /ve /t REG_EXPAND_SZ /d "%%ProgramFiles%%\winrar\WinRAR.exe" /f
reg add "HKLM\SOFTWARE\Classes\*\shell\winrar" /ve /d "打开winrar" /f
reg add "HKLM\SOFTWARE\Classes\*\shell\winrar\command" /ve /t REG_EXPAND_SZ /d "%%ProgramFiles%%\winrar\WinRAR.exe" /f
reg add "HKLM\SOFTWARE\Classes\Folder\shell\winrar" /ve /d "打开winrar" /f
reg add "HKLM\SOFTWARE\Classes\Folder\shell\winrar\command" /ve /t REG_EXPAND_SZ /d "%%ProgramFiles%%\winrar\WinRAR.exe" /f


运行后右键任意文件效果如下:

2.JPG (32.43 KB, 下载次数: 146)

2.JPG

点评

另外请教下: HKCR\*\shell\ HKLM\SOFTWARE\Classes\*\shell 这两个地方都需要操作吗?有什么区别? 好像只用上面的也行……  详情 回复 发表于 2016-6-26 16:05
多谢帮助! 我再修改修改来使用  详情 回复 发表于 2016-6-26 15:05
回复

使用道具 举报

14#
发表于 2016-6-26 13:17:54 | 只看该作者
我日,终于找到怎么右键菜单加子菜单了,千辛万苦找到一个例子,还没有消化,等我研究研究,不过发现我应该睡觉了。这么原创的办法,应该发帖。我可能不回贴了。
我马上就不用explorer做shell了,我这是何苦呢。

点评

期待您研究后分享下 ,多谢!  详情 回复 发表于 2016-6-26 15:07
回复

使用道具 举报

15#
 楼主| 发表于 2016-6-26 15:05:12 | 只看该作者
807979023 发表于 2016-6-26 12:59
pogua007说得对,数据类型是字符串的确不能用环境变量,虽然能导入,实际使用时出錯。
下面是使用成功的右 ...

多谢帮助!
我再修改修改来使用
回复

使用道具 举报

16#
 楼主| 发表于 2016-6-26 15:07:50 | 只看该作者
pogua007 发表于 2016-6-26 13:17
我日,终于找到怎么右键菜单加子菜单了,千辛万苦找到一个例子,还没有消化,等我研究研究,不过发现我应该 ...

期待您研究后分享下 ,多谢!
回复

使用道具 举报

17#
 楼主| 发表于 2016-6-26 16:05:43 | 只看该作者
807979023 发表于 2016-6-26 12:59
pogua007说得对,数据类型是字符串的确不能用环境变量,虽然能导入,实际使用时出錯。
下面是使用成功的右 ...

另外请教下:
HKCR\*\shell\
HKLM\SOFTWARE\Classes\*\shell

这两个地方都需要操作吗?有什么区别?
好像只用上面的也行……
回复

使用道具 举报

18#
发表于 2016-6-26 17:18:46 | 只看该作者
先看看效果图



大体如此,有问题再自己该吧


  1. @ECHO OFF
  2. rem 自动请求以管理员权限运行
  3. echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
  4. reg query HKU\S-1-5-20>nul 2>nul||cscript //b "%temp%\getadmin.vbs"&&del "%temp%\getadmin.vbs" /f /q>nul 2>nul&&exit /b

  5. ECHO 1. 增加带子菜单的右键菜单77zz并关联.7z
  6. ECHO 2. 删除带子菜单的右键菜单77zz并取消关联.7z
  7. echo.
  8. SET /P SEL=
  9. echo.
  10. IF %SEL%==2 CALL :DEL
  11. IF %SEL%==1 CALL :ADD
  12. echo.
  13. echo.
  14. PAUSE
  15. EXIT

  16. :ADD
  17. REM 设置关联
  18. REG ADD HKCR\.7z /D "7-Zip.7z" /F
  19. REG ADD HKCR\7-Zip.7z /D "7z Archive" /F
  20. REG ADD HKCR\7-Zip.7z\DefaultIcon /VE /T REG_EXPAND_SZ /D ""%SYSTEMDRIVE%\Soft\7zip\7z.dll,0"" /F
  21. REG ADD HKCR\7-Zip.7z\shell\open\command /VE /T REG_EXPAND_SZ /D ""%SYSTEMDRIVE%\Soft\7zip\7zFM.exe" "%%1"" /F

  22. REM ------------------------增加带子菜单的右键菜单------------------------>>

  23. REM 定义子菜单具体内容
  24. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax /VE /D "极限压缩为7z" /F
  25. REM 注意:你提供的极限压缩命令有问题,请自己解决,我懒的研究了。
  26. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax\command /D ""%SYSTEMDRIVE%\Soft\7zip\7zg.exe" a -r -t7z -mx9 "%1" .7z "%1"" /F
  27. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz /D "用7Z打开" /F
  28. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz\command /D ""%SYSTEMDRIVE%\Soft\7zip\7zFM.exe" "%1"" /F

  29. REM 定义子菜单要项目名称列表
  30. REG ADD HKCR\*\shell\77zz /V "SubCommands" /D "77zzmax;OpenWith77zz" /F
  31. REM 定义描述,默认77zz可以省略此键值
  32. REG ADD HKCR\*\shell\77zz /V "MUIVerb" /D "77zz" /F
  33. REM 定义图标,不要可以省略此键值
  34. REG ADD HKCR\*\shell\77zz /V "Icon" /D "%SYSTEMDRIVE%\Soft\7zip\7z.dll,0" /F

  35. REM 增加文件夹右键菜单和显示的子菜单
  36. REG ADD HKCR\Directory\shell\7zz /V "SubCommands" /D "77zzmax" /F
  37. REM 定义图标,不要可以省略此键值
  38. REG ADD HKCR\Directory\shell\7zz  /V "Icon" /D "%SYSTEMDRIVE%\Soft\7zip\7z.dll,0" /F
  39. REM <<------------------------增加带子菜单的右键菜单------------------------
  40. GOTO :EOF

  41. :DEL
  42. REM 清理关联
  43. REG DELETE HKCU\Software\7-Zip /F 2>NUL
  44. REG DELETE HKCR\.7z /F 2>NUL
  45. REG DELETE HKCR\7-Zip.7z /F 2>NUL

  46. REM 清理右键菜单
  47. REG DELETE HKCR\*\shell\77zz /F 2>NUL
  48. REG DELETE HKCR\Directory\shell\7zz /F 2>NUL
  49. REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax /F 2>NUL
  50. REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz /F 2>NUL
  51. GOTO :EOF
复制代码

点评

您好,那命令是网上抄的,我测试过没有问题 REG ADD HKCR\7-Zip.7z /D "7z Archive" /F 这句起什么作用? REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax\co  详情 回复 发表于 2016-6-26 18:59
回复

使用道具 举报

19#
发表于 2016-6-26 17:23:24 | 只看该作者
本帖最后由 nttwqz 于 2016-6-26 17:26 编辑

如果想注册表中的值内容是%SYSTEMDRIVE%,改成%%SYSTEMDRIVE%%即可。参考23行。

点评

非常感谢!我再试试~ 网上查到另一种解决相对路径的写法: reg add "HKEY_CLASSES_ROOT\*\shell\notepad++\command" /ve /d "\"%cd%\notepad++.exe\" %%0 " /f  详情 回复 发表于 2016-6-26 17:42
回复

使用道具 举报

20#
 楼主| 发表于 2016-6-26 17:42:03 | 只看该作者
nttwqz 发表于 2016-6-26 17:23
如果想注册表中的值内容是%SYSTEMDRIVE%,改成%%SYSTEMDRIVE%%即可。参考23行。

非常感谢!我再试试~

网上查到另一种解决相对路径的写法:
reg add "HKEY_CLASSES_ROOT\*\shell\notepad++\command" /ve   /d "\"%cd%\notepad++.exe\" %%0 " /f

点评

%~dp0 批处理需要在7Z目录下'或者在开头加个pushd %~dp0,你这注册表就不用好了。  详情 回复 发表于 2016-6-26 18:48
回复

使用道具 举报

21#
发表于 2016-6-26 18:48:07 来自手机 | 只看该作者
netmjwork 发表于 2016-6-26 17:42
非常感谢!我再试试~

网上查到另一种解决相对路径的写法:

%~dp0

批处理需要在7Z目录下'或者在开头加个pushd %~dp0,你这注册表就不用好了。

点评

注册表看来还是没批处理好用…… 他那个批处理开头没有加pushd %~dp0,测试正常使用 他提示是:%0表示传递的是文件名称,%V表示传递的是文件夹的名称  详情 回复 发表于 2016-6-26 19:21
回复

使用道具 举报

22#
 楼主| 发表于 2016-6-26 18:59:34 | 只看该作者
本帖最后由 netmjwork 于 2016-6-26 20:30 编辑


您好,那命令是网上抄的,我测试过没有问题

REG ADD HKCR\7-Zip.7z /D "7z Archive" /F   这句起什么作用?

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax\command
问题就出在这行,这行是什么作用呢?为什么不是以前单独对文件和文件夹分别来设置?
我是XP系统,始终没有出现子菜单,替换内容后也无法使用……
右键只有孤零零一个77ZZ/7zz在那里,点击提示“该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联”

和命令没有关系,因为我换如下的都还是报错“命令行参数无效”
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax\open\command /D "C:\soft\7zip\7zFM.exe"  /F

就两行命令报错,可能也就因为这个原因,子菜单根本不能出现,功能也无法用
按说对一般不是.7z文件来说是没有“用7z打开”的菜单,现在一般文件右键只有一个“77zz”没法用,应该调整好还是目录的形式


补充一点:我测试命令成功是在注册表里面操作成功,不是批处理,比如下面这段
[HKEY_CLASSES_ROOT\*\shell\Zip\command]
@="\"c:\\7zip\\7zg.exe\" a -t7z -mx9 \"%1\".7z \"%1\""

点评

虚拟机中的XP已经删了,只能用03PE测试了,的确无法显示,原因未知。 参数错误已经修正,XP的reg命令没有/VE 参数会报错。 7z文件图标显示异常的问题已经修正 现在一般文件不会显示用7z打开了  详情 回复 发表于 2016-6-26 23:18
回复

使用道具 举报

23#
 楼主| 发表于 2016-6-26 19:21:03 | 只看该作者
nttwqz 发表于 2016-6-26 18:48
%~dp0

批处理需要在7Z目录下'或者在开头加个pushd %~dp0,你这注册表就不用好了。

注册表看来还是没批处理好用……  

他那个批处理开头没有加pushd %~dp0,测试正常使用
他提示是:%0表示传递的是文件名称,%V表示传递的是文件夹的名称
回复

使用道具 举报

24#
发表于 2016-6-26 23:18:27 | 只看该作者
netmjwork 发表于 2016-6-26 18:59
您好,那命令是网上抄的,我测试过没有问题

REG ADD HKCR\7-Zip.7z /D "7z Archive" /F   这句起什 ...

虚拟机中的XP已经删了,只能用03PE测试了,的确无法显示,原因未知。
参数错误已经修正,XP的reg命令没有/VE 参数会报错。
7z文件图标显示异常的问题已经修正
现在一般文件不会显示用7z打开了


  1. @ECHO OFF
  2. rem 自动请求以管理员权限运行
  3. echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
  4. reg query HKU\S-1-5-20>nul 2>nul||cscript //b "%temp%\getadmin.vbs"&&del "%temp%\getadmin.vbs" /f /q>nul 2>nul&&exit /b
  5. pushd %~dp0

  6. ECHO 1. 增加带子菜单的右键菜单77zz并关联.7z
  7. ECHO 2. 删除带子菜单的右键菜单77zz并取消关联.7z
  8. echo.
  9. SET /P SEL=
  10. echo.
  11. IF %SEL%==2 CALL :DEL
  12. IF %SEL%==1 CALL :ADD
  13. echo.
  14. echo.
  15. PAUSE
  16. EXIT

  17. :ADD
  18. REM 设置关联
  19. if not exist %cd%\7zfm.exe echo 未发现7-Zip主程序,请将我放在7-Zip根目录下。&pause>nul&exit
  20. REG ADD HKCR\.7z /VE /D "7-Zip.7z" /F
  21. REG ADD HKCR\7-Zip.7z /VE /D "7z Archive" /F
  22. REG ADD HKCR\7-Zip.7z\DefaultIcon /VE /T REG_SZ /D "%cd%\7z.dll,0" /F
  23. REG ADD HKCR\7-Zip.7z\shell\open\command /VE /T REG_EXPAND_SZ /D ""%cd%\7zFM.exe" "%%1"" /F

  24. REM ------------------------增加带子菜单的右键菜单------------------------>>

  25. REM 定义子菜单具体内容
  26. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax /VE /D "极限压缩为7z" /F
  27. REM 注意:你提供的极限压缩命令有问题,请自己解决,我懒的研究了。
  28. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax\command /VE /D ""%cd%\7zg.exe" a -r -t7z -mx9 "%%1" .7z "%%1"" /F
  29. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz /VE /D "用7z打开" /F
  30. REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz\command /VE /D ""%cd%\7zFM.exe" "%%1"" /F

  31. REM 定义子菜单要项目名称列表
  32. REG ADD HKCR\*\shell\77zz /V "SubCommands" /D "77zzmax" /F
  33. REG ADD HKCR\7-Zip.7z\shell\77zz /V "SubCommands" /D "77zzmax;OpenWith77zz" /F
  34. REM 定义名称,默认77zz可以省略此键值
  35. REG ADD HKCR\*\shell\77zz /V "MUIVerb" /D "77zz" /F
  36. REM 定义图标,不要可以省略此键值
  37. REG ADD HKCR\*\shell\77zz /V "Icon" /D "%cd%\7z.dll,0" /F
  38. REG ADD HKCR\7-Zip.7z\shell\77zz /V  "Icon" /D "%cd%\7z.dll,0" /F

  39. REM 增加文件夹右键菜单和显示的子菜单
  40. REG ADD HKCR\Directory\shell\7zz /V "SubCommands" /D "77zzmax" /F
  41. REM 定义图标,不要可以省略此键值
  42. REG ADD HKCR\Directory\shell\7zz  /V "Icon" /D "%cd%\7z.dll,0" /F
  43. REM <<------------------------增加带子菜单的右键菜单------------------------
  44. GOTO :EOF

  45. :DEL
  46. REM 清理关联
  47. REG DELETE HKCU\Software\7-Zip /F 2>NUL
  48. REG DELETE HKCR\.7z /F 2>NUL
  49. REG DELETE HKCR\7-Zip.7z /F 2>NUL

  50. REM 清理右键菜单
  51. REG DELETE HKCR\*\shell\77zz /F 2>NUL
  52. REG DELETE HKCR\Directory\shell\7zz /F 2>NUL
  53. REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\77zzmax /F 2>NUL
  54. REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OpenWith77zz /F 2>NUL
  55. GOTO :EOF
复制代码

点评

这个还是有点儿小问题,带空格路径居然不识别? 确定是路径的问题,代码里没有and这个词…… [attachimg]247083[/attachimg]  详情 回复 发表于 2016-6-27 08:48
回复

使用道具 举报

25#
发表于 2016-6-26 23:27:01 | 只看该作者
XP系统不支持注册表写目录式子菜单,NT6以上才支持

点评

谢谢~ 早知道xp就不去想着弄子菜单了…… 一个右键菜单还省事儿~  详情 回复 发表于 2016-6-27 08:45
哈哈哈哈,不知道楼主什么感觉,折腾了半天,竟然不支持。 多谢科普,我也不知道。 其实吧,感觉楼主把简单的问题复杂化了,7-Zip安装包本身很小,没必要绿色,静默安装也很快(/S,S必须  详情 回复 发表于 2016-6-26 23:40
回复

使用道具 举报

26#
发表于 2016-6-26 23:40:47 | 只看该作者
singel 发表于 2016-6-26 23:27
XP系统不支持注册表写目录式子菜单,NT6以上才支持

哈哈哈哈,不知道楼主什么感觉,折腾了半天,竟然不支持。

多谢科普,我也不知道。


其实吧,感觉楼主把简单的问题复杂化了,7-Zip安装包本身很小,没必要绿色,静默安装也很快(/S,S必须大写),安装好之后就有右键菜单了,如果想自定义右键菜单和文件关联,手动设置一下,用RegWorkshop对比一下注册表就好了

点评

非常感谢您! 很晚了还专门用03测试一遍…… 您说的应该是安装包用/S参数,这个还真不知道,我是安装后再设置,要么复制解压后的文件夹,以后换环境用觉得麻烦,才想起来操作“一键式”的效果 新手可能会经常  详情 回复 发表于 2016-6-27 08:24
我很看好楼主哈,很有想法,搞技术不怕知识缺乏,不怕菜,敢想敢干才是重要的,知识是可以增长的,有想法才有发展前途。 楼主也不是什么伸手党,他会从多种途径努力寻找解决办法,虽然因为水平的限制,暂时无法鉴别  详情 回复 发表于 2016-6-27 00:02
回复

使用道具 举报

27#
发表于 2016-6-26 23:53:29 | 只看该作者
REG ADD HKCR\7-Zip.7z /D "7z Archive" /F   这句起什么作用?


文件类型描述,比如改成 楼主被冰激凌绊倒了,就有了下面的效果(可能需要重启)。

回复

使用道具 举报

28#
发表于 2016-6-27 00:02:52 | 只看该作者
nttwqz 发表于 2016-6-26 23:40
哈哈哈哈,不知道楼主什么感觉,折腾了半天,竟然不支持。

多谢科普,我也不知道。 ...

我很看好楼主哈,很有想法,搞技术不怕知识缺乏,不怕菜,敢想敢干才是重要的,知识是可以增长的,有想法才有发展前途。
楼主也不是什么伸手党,他会从多种途径努力寻找解决办法,虽然因为水平的限制,暂时无法鉴别和组合找到的东西,但是确实是很努力的自己解决问题。这很好,希望继续坚持这种独立自主、自力更生的好习惯。
楼主请求人帮忙的时候也很虚心,很有礼貌,很注意方法,总是努力的想表述清楚自己的想要什么。
总之这是个不错的小伙子,他给了我一种十几年前逛论坛的那种感觉,有能力的请多多帮助他,期待他的成长。

点评

谢谢鼓励! 现在是为了一些想法啃代码(没有基础只能啃了~),没有基础也只能实现一些简单的效果,现在是想解决一部分实用性的问题。 其实也正常的,不会又想实现的效果就要虚心的向别人请教,别人帮助解答  详情 回复 发表于 2016-6-27 08:33
回复

使用道具 举报

29#
 楼主| 发表于 2016-6-27 08:24:17 | 只看该作者
nttwqz 发表于 2016-6-26 23:40
哈哈哈哈,不知道楼主什么感觉,折腾了半天,竟然不支持。

多谢科普,我也不知道。 ...

非常感谢您!
很晚了还专门用03测试一遍……

您说的应该是安装包用/S参数,这个还真不知道,我是安装后再设置,要么复制解压后的文件夹,以后换环境用觉得麻烦,才想起来操作“一键式”的效果

新手可能会经常因为不了解犯这种“复杂化”的错误,最开始找到的答案是注册表,就从注册表开始解决了……
确认您那第一版子菜单无效后就用最简单的一个右键,后来用的注册表抓取(是程序自动生成自定义)解决的,但不知道系统通用性怎么样,可能win7还会有些问题,以后再调整,收藏您的方法~
回复

使用道具 举报

30#
 楼主| 发表于 2016-6-27 08:33:18 | 只看该作者
pogua007 发表于 2016-6-27 00:02
我很看好楼主哈,很有想法,搞技术不怕知识缺乏,不怕菜,敢想敢干才是重要的,知识是可以增长的,有想法 ...

谢谢鼓励!

现在是为了一些想法啃代码(没有基础只能啃了~),没有基础也只能实现一些简单的效果,现在是想解决一部分实用性的问题。

其实也正常的,不会又想实现的效果就要虚心的向别人请教,别人帮助解答了一定要认真感谢别人的,如果因为忙或别的原因不能解答那就自己找别的方法解决,实在不行就只能放着以后有时间解决了……

点评

你上次问那个7z不能解压至win10带空格的路径的问题里面,我给你举的例子里面就有7z静默安装的示例。不过静默安装之后的默认设置很不怎么样,除了7z之外,zip和rar文件都没有关联。菜单也没有设置,如果不想手工设置  详情 回复 发表于 2016-6-27 08:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-1 13:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表