In C# System.IO.DriveInfo
ha la proprietà DriveType
.Che tipo di unità è "NoRootDirectory" (System.IO.DriveType.NoRootDirectory)?
System.IO.DriveType
è un enum:
public enum DriveType
{
Unknown = 0,
//
// Summary:
// The drive does not have a root directory.
NoRootDirectory = 1,
Removable = 2,
Fixed = 3,
Network = 4,
CDRom = 5,
Ram = 6,
}
ho il sospetto che questo è un volume senza una lettera di unità. Ma usando:
System.IO.DriveInfo.GetDrives();
non elenca il mio volume senza lettera di unità.
È NoRootDirectory
utilizzato per qualsiasi altro tipo di volumi/unità o non lo fa semplicemente System.IO.DriveInfo.GetDrives()
?
So che è utilizzato per le lettere di unità non assegnate. Ovviamente non li otterrete tramite 'GetDrives' ma proverai' nuovo System.IO.DriveInfo ("B:"). DriveType' o simile. Potrebbe essere usato anche per le partizioni non formattate (o per i filesystem sconosciuti), ma non ne sono del tutto sicuro (dovresti verificare se in questo caso ottieni "Unknown" o "NoRootDirectory"). Per completezza, potresti anche creare unità di spazzatura andando su 'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ DOS Devices 'e creando un disco' X: 'puntando a' \ Device \ Null' per esempio e vedi cosa ottieni per coloro. – CherryDT
In realtà, la [documentazione per la funzione WinAPI sottostante 'GetDriveType'] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364939 (v = vs.85) .aspx) è un po ' più chiaro. Dice: "Il percorso root non è valido, ad esempio non è stato montato alcun volume nel percorso specificato." – CherryDT
Tradurrei "il percorso root non valido" come "Il percorso kernel' \ DosDevices \ X: 'non risolve/collega a un oggetto directory di filesystem valido in grado di risolvere una richiesta per il percorso' \ '." - Probabilmente la frase è stata scritta da qualcuno con conoscenza del kernel di Windows. In questo caso, suppongo che le mie "unità di spazzatura" da sopra possano anche darti questo valore, così come ogni lettera di unità non assegnata. – CherryDT