为什么有些 Windows 10 计算机在其命令提示符中支持 UNC 路径?

为什么有些 Windows 10 计算机在其命令提示符中支持 UNC 路径?

多年来,我已经接受了 Windows 命令提示符不支持 UNC 路径作为当前目录的事实。然而,几周前,我的两个同事报告说他们可以从 UNC 目录运行批处理文件。

我一直搞不清楚这两台机器有什么特别之处。有人能解释一下吗?如果可以的话,告诉我如何设置我自己的命令提示符来接受 UNC 路径?

为了向您展示差异,我们创建了一个小批处理文件,将其保存在“\rpfil01\Projects\test”中并从相同的 UNC 路径执行它。

批处理文件内容:

ver
dir randomFolder
cd randomFolder
pause

结果附如下UNC 支持.jpgUNC 不受支持.png从“UNC not supports.png”可以看出,我的机器只是默认为“C:\Windows”,但在我的同事的机器(“UNC supports.jpg”)上,UNC 路径被用作当前目录。

但是,当命令提示符使用 UNC 路径作为当前目录时,“cd”无法用于在目录树中向上或向下移动。这可以从“UNC supports.jpg”中看出,其中 dir 命令能够列出“randomFolder”的内容,但 cd 命令无法将当前目录更改为“randomFolder”。

从附图中可以看出,我们的 Windows 版本不同(即使两台机器都根据 Windows 更新进行了更新)。这种行为可能是旧 Windows 版本中的某种错误吗?如果是这样,那是一个非常方便的错误。;-)

答案1

我终于自己找到了解决方案。这不是 Windows 10 版本不同,而是注册表 DWORD 值“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\DisableUNCCheck”。如果此值等于 1,则命令提示符接受 UNC 路径作为当前目录。如​​果此值等于 0(或不存在),则命令提示符不接受 UNC 路径。

当使用 UNC 路径作为当前目录时,命令提示符存在限制:

  • 许多标准命令,如 cd(更改目录)和 del(删除),不起作用。
  • 您不能使用 Tab 键根据当前目录的内容自动完成写了一半的命令。
  • 可能还有很多我还没发现的东西。

但是,从命令提示符启动的程序会将 UNC 目录继承为其当前目录。因此,许多批处理文件在启用此注册表标志的情况下都可以工作,但并非所有批处理文件都可以工作。对于那些不工作的文件,您仍然需要映射驱动器号或使用 pushd 和 popd。

后续问题:

  1. 您是否建议设置 DisableUNCCheck 标志?
  2. 禁用 UNC 检查可能存在哪些问题?安全问题还是其他问题?

毕竟,微软已决定发布不带此标志的 Windows。

相关内容