【发布时间】:2017-12-23 03:33:39
【问题描述】:
我试图删除一个文件夹,其中一个子文件夹的名称为“con”,这是一个保留的设备名称,因此 C# 会引发异常。
在 CMD 中,我可以使用 rmdir \\.\c:\con 删除这样的文件夹,但在 C# 中,我尝试了很多变体,但总是发现路径格式不受支持。例如,以下内容不起作用:Directory.Delete("\\\\" + Environment.UserDomainName + "\\c:\\test")。
请注意,我不想依赖外部命令,例如 CMD 的del 命令等。
【问题讨论】:
-
使用 Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) + @"c:\test"
-
@Polly 它适用于普通文件夹名称,如“test”,但我正在尝试删除名称为“con、com4”等的文件夹。女巫在 windows 中被阻止,使用您的代码抛出异常以删除 c:\con
请在 cmd 中运行 {mkdir \\.\c:\con } 并尝试通过 c# 删除它 -
好的,您可以调用隐藏的终端窗口并从那里使用“rmdir \\.\c:con”作为变体
-
正如我所说,我不想依赖 emdir.exe 或等。感谢您的帮助
-
仅供参考,“\\Domain\c:\test”无效。使用重定向器时,隐藏的驱动器共享为“C$”,例如“\\域\C$\test”。诸如“\\?\C:\test”或“\\.\C:\test”之类的路径是本地设备路径,而不是 UNC 网络共享。底层实现完全不同。 UNC 路径实际上最终会使用 UNC 设备转换为“\\?\UNC\server\share\...”,该设备是当今 MUP 设备的链接。