如果不在 C 盘上使用,“在此处打开控制台”为什么不在正确的驱动器上打开 cmd?

如果不在 C 盘上使用,“在此处打开控制台”为什么不在正确的驱动器上打开 cmd?

当我[ Shift+ 右键点击]一个文件夹不是在我的C驱动器上并选择“在这里打开控制台”我得到一个cmd窗口不是在正确的位置打开,但却指向C:\Windows\system32。我必须手动切换到正确的驱动器,但当我这样做时,它却指向正确的文件夹。这几乎不是什么世界末日,但它是一个小小的烦恼,真的开始让我恼火了……

注意:它对于驱动器上的位置确实能正常工作C

这是在外部使用时的预期行为吗C

如果不是,我该如何修复?
如果是,我该如何将其更改为直接加载其他驱动器的文件夹?


例如,如果我尝试打开一个指向桌面上文件夹的控制台窗口,如下所示:

从桌面文件夹的 Shift + 右键单击​​菜单中选择“在此处打开控制台”

我收到一个cmd窗口,指出C:\Windows\system32我必须手动切换到D:,但这样做之后,您可以看到其中的文件夹D:已被成功选择:

CMD 窗口最初显示 C:\win\sys32 文件夹,但单个“D:”命令更改为正确位置。


更新

看来“在这里打开控制台”可能是非标准的(见评论)。

为了完整起见,事实证明,当我单击文件夹内部(它是“文件空间”,而不是文件夹图标本身)时,我会在列表下方看到可能是标准的“在此处打开命令窗口”,如下图所示,所以两者之间出现了一些差异:

直接从桌面打开时按 shift+RMF 菜单(未突出显示任何内容)

答案1

审查了登记册并在聊天中询问人们,我确定传递给cmd此处调用的实例的参数不正确。

该命令可以在中找到[HKEY_CLASSES_ROOT\Directory\shell\cmd\command],并且我的值为(Default)

cmd.exe /k cd \"%L\"

将其更改为以下值(在该简短的聊天会话)已解决该问题:

cmd.exe /s /k pushd \"%V\"

也就是说,虽然问题已经解决,但我不知道最初是什么导致了这种变化......

答案2

自我回答DMA57361显然已经解决了原始问题。我想添加一些我发现的信息……

HKEY_CLASSES_ROOT\Directory\shell\cmd首先,我注意到名为 的键中有一个可疑的值Extended。凭直觉,我将该值重命名为xxx-Extended,现在“在此处打开命令窗口”菜单项经常出现而不需要 Shift 键。由于旧的 tweak-ui 解决方案不需要 Shift 键,这个发现让我很高兴!

HKEY_CLASSES_ROOT\Directory\shell\cmd\command其次,我相对未修改的 Windows 7 Pro 64 位安装具有仅设置了默认值的注册表项cmd.exe /s /k pushd "%V"(请注意,类型是 REG_SZ,而不是 REG_EXPAND_SZ。的含义%V(以及报告的用法%L)不是环境变量替换的结果,扩展必须由 Explorer 本身完成。)

可用的上下文菜单插件被列为注册表项的子项HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers。(中的其他项....\shellex是其他类型的 shell 扩展的处理程序。)其中一个处理程序,或者可能是其他扩展之一,可能是该项奇怪的默认值的来源....\command

编辑 相邻的键HKEY_CLASSES_ROOT\Directory\Background\shell\cmd也有一个名为 的值Extended。事实证明,这个键控制文件夹内容视图(右窗格和桌面本身)中的上下文菜单,而上面命名的键控制文件夹对象本身的上下文菜单(它们在右侧或桌面上的图标,或左侧文件夹树上的任何位置)。

答案3

pushd如果您希望 Windows 7 将驱动器号切换到目录,即切换驱动器,则是必需的。

所需的注册表项如下所示(我称之为 DOS) - 将其放入 .reg 文件并执行:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DOS]

[HKEY_CLASSES_ROOT\Folder\shell\DOS\command]
@="\"C:\\WINDOWS\\SYSTEM32\\CMD.EXE\" /s /K  pushd \"%v\""

相关内容