Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:不支持路径格式,如\\.\C:\or\\DOMAIN\C:\_C#_Windows_File - Fatal编程技术网

C#:不支持路径格式,如\\.\C:\or\\DOMAIN\C:\

C#:不支持路径格式,如\\.\C:\or\\DOMAIN\C:\,c#,windows,file,C#,Windows,File,我试图删除一个文件夹,其中一个子文件夹的名称为“con”,这是一个保留的设备名称,因此C#抛出一个异常 在CMD中,我可以使用rmdir\\.\c:\con删除这样的文件夹,但在c中,我尝试了很多不同的方法,总是发现路径格式不受支持。例如,以下操作不起作用:Directory.Delete(“\\\\”+Environment.UserDomainName+”\\c:\\test”) 请注意,我不想依赖外部命令,如CMD的del命令等。您必须绕过.net framework,使用\?\c:\co

我试图删除一个文件夹,其中一个子文件夹的名称为“con”,这是一个保留的设备名称,因此C#抛出一个异常

在CMD中,我可以使用
rmdir\\.\c:\con
删除这样的文件夹,但在c中,我尝试了很多不同的方法,总是发现路径格式不受支持。例如,以下操作不起作用:
Directory.Delete(“\\\\”+Environment.UserDomainName+”\\c:\\test”)


请注意,我不想依赖外部命令,如CMD的
del
命令等。

您必须绕过.net framework,使用
\?\c:\con
符号删除文件,并使用p/invoke调用
RemoveDirectory
调用

[DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
static extern bool RemoveDirectory(string lpPathName);

public static DeleteBadDir()
{
     RemoveDirectory(@"\\?\c:\con");
}

使用Environment.GetFolderPath(Environment.SpecialFolder.MyComputer)+@“c:\test”@Polly它适用于普通文件夹名称,如“test”,但我正在尝试删除一个名为“con,com4”和“et”的文件夹。这些文件夹在windows中被阻止,使用您的代码会引发一个异常,以删除c:\con
请运行{mkdir\\\\ c:\con}在cmd中,并尝试用c#好的,您可以调用Hidded terminal window并使用“rmdir\\.\c:con”作为变量,我说过我不想依赖emdir.exe或et。谢谢您的帮助,仅供参考,“\\Domain\c:\test”无效。使用重定向器时,隐藏的驱动器共享为“C$”,例如“\\Domain\C$\test”。诸如“\\?\C:\test”或“\\.\C:\test”之类的路径是本地设备路径,而不是UNC网络共享。底层实现完全不同。UNC路径实际上最终会使用UNC设备转换为“\?\UNC\server\share\…”,UNC设备现在是指向MUP设备的链接。我考虑过这一点,但如果msdn中的文件夹不为空,则此方法不应起作用。对于此函数,目录必须为空。还有一个递归示例可以删除文件夹的内容。