windows创建右键菜单 + winr快捷命令

右键菜单

创建右键cmd

创建一个cmd.reg 输入以下内容

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cmd_here]

@="打开命令行"

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cmd_here\command]

@="\"C:\\Windows\\System32\\cmd.exe\""

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmdPrompt]

@="打开命令行"

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmdPrompt\command]

@="\"C:\\Windows\\System32\\cmd.exe\" \"cd %1\""

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_here]

@="打开命令行"

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_here\command]

@="\"C:\\Windows\\System32\\cmd.exe\""
设置图表 icon

在 cmd_here 下创建 字符串值 icon 值:

可以设置为 C:\Windows\System32\cmd.exe

也可以直接设置一个图片 test.icon

设置 winr快捷命令

设置vbs脚本
新建一个 inkpath.vbs脚本

' 脚本说明 https://blog.csdn.net/milaoshu1020/article/details/80711574
' 脚本版本 v1.1
' installpath是本脚本要安装到的路径.
' d:\L是脚本所在的路径,也是保存快捷方式的目录.
' [更新历史]
' 2019.06.03 v1.2 增加了安装时自动提权的代码.
' 2018.12.29 v1.1 新增加了对系统变量PATHEXT的注册,效果是自定义命令可以在命令行中使用(不用加扩展名".LNK").
' 2018.06.18 v1.0 初始版本,实现了基本功能.
installpath = "E:\worksoft\inkpath\Win+R快捷命令.vbs"

set fso = createobject("scripting.filesystemobject")
set shell = createobject("wscript.shell")
installdir = fso.getparentfoldername(installpath)
installbase = fso.getbasename(installpath)

If wscript.arguments.count = 0 Then
	Set sh = createobject("shell.application")
	sh.shellexecute wscript.fullname,"""" & wscript.scriptfullname & """ -install",,"runas"
Else
	If wscript.arguments(0) = "-install" Then
		Select Case msgbox("是否安装'" & installbase & "'脚本?",vbokcancel)
		Case vbcancel
			wscript.quit
		End select
		copyscriptfile
		addinstdirtosystempath
		createinstdirlnk
		createsendtolnk
		msgbox "'" & installpath & "'安装完成,你现在可以:" & vbcrlf & _
			"使用右键菜单中的'发送到'创建自定义命令." & vbcrlf & _
			"Win+R,输入'" & fso.getfolder(installdir).name & "'以打开命令(快捷方式)列表目录." & vbcrlf & _
			"Win+R,输入'命令(快捷方式名称)'以打开相应的程序或者目录."
	Else
		prompttoaddlnk
	End If
End If

Sub PromptToAddLnk()
	For i = 0 To wscript.arguments.count - 1
		targetpath = wscript.arguments(i)
		lnkname = fso.getbasename(targetpath)
		do
			lnkname = inputbox("请输入'" & fso.getfilename(targetpath) & "'的快捷方式名称(用于运行命令):",,lnkname)
			lnkpath = fso.buildpath(installdir,lnkname & ".lnk")
			If Not fso.fileexists(lnkpath) Or lnkname = "" Then
				Exit Do
			End If
			Select Case msgbox("'" & lnkpath & "'文件已存在,是否覆盖?",vbexclamation Or vbyesnocancel)
			Case vbyes
				Exit Do
			Case vbcancel
				lnkname = ""
				Exit Do
			End Select
		Loop While True
		If lnkname <> "" Then
			Set shortcut = shell.createshortcut(lnkpath)
			shortcut.targetpath = targetpath
			shortcut.save
			msgbox "'" & lnkpath & "'创建成功!"
		End If
	Next
End Sub

Sub CopyScriptFile()
	If LCase(installpath) = LCase(wscript.scriptfullname) Then
		Exit Sub
	End If

	If Not fso.folderexists(installdir) Then
		fso.createfolder(installdir)
	End If

	fso.copyfile wscript.scriptfullname,installpath,true
End Sub

Sub AddInstDirToSystemPath()
	pathname = installdir & ";"
	Set sysenv = shell.environment("System")
	If InStr(LCase(sysenv("PATH")),LCase(pathname)) = 0 Then
		sysenv("PATH") = pathname & sysenv("PATH")
	End If
	extname = ";.LNK"
	If InStr(LCase(sysenv("PATHEXT")),LCase(extname)) = 0 Then
		sysenv("PATHEXT") = sysenv("PATHEXT") & extname
	End If
End Sub

Sub CreateSendToLnk()
	sendtodir = shell.specialfolders("SendTo")
	lnkpath = fso.buildpath(sendtodir,installbase & ".lnk")
	Set shortcut = shell.createshortcut(lnkpath)
	shortcut.targetpath = installpath
	shortcut.save
End Sub

Sub CreateInstDirLnk()
	lnkpath = fso.buildpath(installdir,fso.getfolder(installdir).name & ".lnk")
	If Not fso.fileexists(lnkpath) Then
		Set shortcut = shell.createshortcut(lnkpath)
		shortcut.targetpath = installdir
		shortcut.save
	End If
End Sub

使用ScriptCryptor 转换为 winr.exe
设置右键菜单
在注册表 folder 下创建右键  command 为 E:\worksoft\inkpath\winr.exe "%V"

注册表说明

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell  下创建  对文件夹生效
计算机\HKEY_CLASSES_ROOT\*\shell 下  对 文件(.txt   .docx)生效()

folder 和 directory 区别

Windows 系统中,我们经常会见到「目录」和「文件夹」两个名词,但很多人会这两个概念混用,甚至搞不清楚它们的区别,包括写这篇博文的我,之前也是一样。同样表示「文件夹」的概念,为什么会有两个说法?事实上,这两个词不仅仅是在中文中,在英文原文中,也是有两个不同的词汇,DirectoryFolder。通常,Directory 被翻译成「目录」,而 Folder 被翻译成「文件夹」。但实际的情况是,很多情况下,这两个的翻译都比较混乱,Directory 也经常被翻译为「文件夹」。那么微软使用 DirectoryFolder 这两个名词到底什么不同的意义和差异呢?这个问题我多年也没搞清楚,直到最近又在网上搜索资料,并自己进行一些测试后,才发现他们的细微差别。

首先,作为一个 Windows 开发人员,注册表、文件关联等都应该是了解的。那么大家应该都知道,在 Windows 的注册表编辑器中的 HKEY_CLASSES_ROOT 节点下面,有 DirectoryFolder 两个子键,类似其他的 ProgId 子键,支持在其 shell 子键添加自定义的动作和命令。有一天我突发奇想,如果我分别在这两个位置添加一个动作项,系统该如何显示它们?于是我分别在不同的位置单独添加注册表项,然后观察右键菜单,发现了其中的秘密:

仅在 HKEY_CLASSES_ROOTDirectoryshell 下面随便添加一个节点,如 action,我分别在「计算机」、「回收站」、「计算机」中的任意驱动器、普通文件夹上点击右键,只有普通的文件夹右键菜单中出现了 action 这一菜单项。

仅在 HKEY_CLASSES_ROOTFoldershell 下面随便添加一个节点,如 action,我分别在「计算机」、「回收站」、「计算机」中的任意驱动器、普通文件夹上点击右键,所有这些项目的右键菜单中均出现了 action 这一菜单项。

仅在 HKEY_CLASSES_ROOTDriveshell 下面随便添加一个节点,如 action,我分别在「计算机」、「回收站」、「计算机」中的任意驱动器、普通文件夹上点击右键,只有驱动器盘符右键菜单中出现了 action 这一菜单项。

如此看来,Folder 的范围其实是很大的,它包括了系统中所有可以双击打开并查看其内容的「文件夹」项目,包括「计算机」、「回收站」、「控制面板」等这些虚拟文件夹,以及「计算机」中的所有磁盘驱动器,以及其中的任何文件夹 (Directory)。

而 Directory 的概念则小的很多,它必须是存在于物理磁盘上的一个「文件夹」项目,而「计算机」中的所有磁盘驱动器,如「本地磁盘 (C:)」则不认为是 Directory。

总结:如果是开发外壳扩展 dll,最好根据需要写入到正确的子键下面,不要在 DirectoryFolder 等子键下乱写一通。虽然有的外壳扩展不支持虚拟文件夹,写在 Directory 下系统也并不会加载,但还是希望各位开发人员能够正确遵守规范。

完整示例

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\添加到快捷方式]
"icon"="E:\\back\\Pictures\\icon\\damotouicon (6).ico"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\添加到快捷方式\command]
@="E:\\worksoft\\inkpath\\winr.exe \"%V\""
    
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\open_cmd]
"icon"="C:\\Windows\\System32\\cmd.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\open_cmd\command]
@="\"C:\\Windows\\System32\\cmd.exe\" \"cd %1\""
    
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\open_cmd]
"icon"="C:\\Windows\\System32\\cmd.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\open_cmd\command]
@="\"C:\\Windows\\System32\\cmd.exe\""


[HKEY_CLASSES_ROOT\*\shell\添加到快捷命令]
"icon"="E:\\back\\Pictures\\icon\\damotouicon (6).ico"

[HKEY_CLASSES_ROOT\*\shell\添加到快捷命令\command]
@="E:\\worksoft\\inkpath\\winr.exe \"%V\""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值