注册表中的 %1 在 Windows 8 中未扩展

注册表中的 %1 在 Windows 8 中未扩展

我制作了一个工具,可以在右键单击目录、目录或驱动器的“空白区域”内时将一些内容添加到上下文菜单中。我在 Windows XP、Vista 和 7 中广泛使用过这个工具,但现在我已升级到 Windows 8,但在获取启动命令的目录时遇到了问题。

我添加的内容之一是“此处命令提示符”,并且我使用 INF 文件中的以下内容实现了此功能:

HKCR,Directory\Background\Shell\CommandPromptHere\command,,,"""%SystemRoot%\System32\cmd.exe"" /c cmd /s /k ""VER && PUSHD ""%1"""""

这会在 REG_EXPAND_SZ 键中添加以下内容:

"%SystemRoot%\System32\cmd.exe" /c cmd /s /k "VER && PUSHD "%1""

由于这不起作用(找不到 cmd.exe),我尝试用以下方法替换它:

cmd /c cmd /s /k "VER && PUSHD "%1"

在 Windows 7、Vista 和 XP 中,“%1”会扩展到右键单击背景的目录。但是,它在 Windows 8 中不起作用。即使尝试将其回显到命令行似乎也不起作用。

当我使用“ECHO %cd%”时,我可以扩展“%cd%”,但我似乎无法使用它在那里启动命令提示符(“PUSHD %cd%”不起作用)。

Windows 8 中的参数是否发生了变化?它无法正常工作还有其他原因吗?还有其他方法可以使用注册表项“在当前目录中启动命令提示符”吗?我遗漏了什么吗?

代码在这里:https://github.com/Ehryk/ContextMenuTools以获取更多详细信息或建议。

答案1

显然,无论出于什么原因,在 Windows 8 中使用 /Background/ 命令时 %1 都不会像在 Windows 7 中那样被填充。

我通过使用以下方法解决了这个问题:

cmd /c cmd /s /k "VER && @cd "%%%CD%%%"

任何关于为什么会发生这种变化的见解都非常受欢迎。

相关内容