将选项参数传递给 Windows 注册表编辑器中的上下文菜单命令

将选项参数传递给 Windows 注册表编辑器中的上下文菜单命令

如何使用 regedit.exe 编辑 Windows 注册表,将选项传递给被调用的程序?据我所知,这是一个语法问题。

例如...我最近在 windows/system32 文件夹中添加了一个名为 sDelete.exe 的新程序。它是 Microsofts sysinternals 提供的安全删除程序

http://technet.microsoft.com/en-us/sysinternals/bb897443

摘自网站:SDelete 实施了国防部清理和清理标准 DOD 5220.22-M,让您确信一旦使用 SDelete 删除,您的文件数据将永远消失。请注意,SDelete 可以安全删除文件数据,但不能删除位于可用磁盘空间中的文件名。

所以我想在 Windows 7 中右键单击文件时添加上下文菜单项。到目前为止,我可以从上下文菜单中删除程序,但只能在不传递选项参数的情况下调用它。

  1. windowKey + R:打开运行窗口;输入 regedit.exe 打开注册表编辑器
  2. 转到 HKEY_CLASSES_ROOT*\shell\
  3. 创建一个名为“sDelete: 3 Passes”的新键
  4. 右键单击新键并创建另一个新键,将其命名为“command”。
  5. 双击(默认)并输入以下命令“c:\\windows\\system32\\sdelete.exe” “%1”

(更新:解决方案如下)

此时,我可以右键单击文件并安全删除它,但默认值只有 1 次。我太过偏执,无法接受这种行为。现在,我尝试了几种不同的方法来传递参数选项,该选项指定我希望 sDelete 执行的传递次数。例如,“-p 3”将指定 3 次传递。

我不知道该如何实现它。我以为我做到了,但后来意识到它不对。

我们如何以这种方式通过上下文菜单将选项参数传递给程序调用?

更新:问题出在参数的语法上。

我明白了。我按照你的建议做了,还做了各种变通,但都不起作用。“-p 3”不起作用,我会收到错误,或者会打开一个窗口,要求我指定一个程序来打开它。

  • 双击(默认)并输入以下命令

使用“c:\\windows\\system32\\sdelete.exe” “-p” “3” “%1”

不是“c:\\windows\system32\\sdelete.exe”“-p 3”“%1”

而不是“c:\\windows\\system32\\sdelete.exe -p 3” “%1”

而不是“c:\\windows\\system32\\sdelete.exe -p 3%1”

而不是 c:\\windows\\system32\\sdelete.exe -p 3%1

请注意,包含空格会导致问题。这实际上是有道理的。Windows 忽略空格,但当空格包含在字符串中时,程序只会将字符串与有限的预定列表进行匹配。需要精确匹配。“-p 3”不等于“-p” “3”。当匹配参数字符串“-p 3”时,没有名为“p 3”的选项。相反,我们应该提供选项“-p”来告诉程序“监听”要传递给程序的值。如果它不以 - 符号开头,则程序会将其解释为文件名。

因此,将您通常会从在 cmd 输入中输入的字符串中解析出的所有参数分离出来是正确初始化它们的方法。

答案1

您只需在注册表项中输入的命令行中包含参数即可。语法完全取决于您运行的命令。如果 SDelete 需要“-p 3”,它应该可以工作。如果不行,请查阅 SDelete 文档。

相关内容