Я могу перечислить локальные диски с помощью метода DriveInfo.GetDrives (). также я получаю доступ к имени диска, используя свойство Name. Но я получаю сообщение об ошибке «Система. Исключение UnauthorizedAccess:« Доступ к пути «X: \» запрещен ». при доступе к любым свойствам, таким как AvailableFreeSpace. Код ниже.
DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Debug.WriteLine("Drive: " + d.Name); //This line executes w/o error! Debug.WriteLine("Drive: " + d.AvailableFreeSpace); Debug.WriteLine("Drive: " + d.TotalSize); }
NB. Я поместил следующие строки xmlns: rescap = "http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" в блок тегов пакета и внутри блока тегов Capabilities в файле Package.appxmanifest в моем проекте.
Я могу получить общее и доступное дисковое пространство для некоторых моих дисков, используя этот код:
const String k_freeSpace = "System.FreeSpace"; const String k_totalSpace = "System.Capacity"; DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { try { Debug.WriteLine("Drive: " + d.Name); Debug.WriteLine("RootDir: " + d.RootDirectory.FullName); StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(d.RootDirectory.FullName); var props = await folder.Properties.RetrievePropertiesAsync(new string[] { k_freeSpace, k_totalSpace }); Debug.WriteLine("FreeSpace: " + (UInt64)props[k_freeSpace]); Debug.WriteLine("Capacity: " + (UInt64)props[k_totalSpace]); } catch (Exception ex) { Debug.WriteLine(String.Format("Couldn't get info for drive {0}. Does it have media in it?", d.Name)); } }
Я нацеливаюсь на Windows 10, версия 1803 (10.0: сборка 17134) как для моей "минимальной версии", так и для "целевой версии".
Вот несколько выдержек из моего Package.appxmanifest
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp iot rescap">
...
<Capabilities> <Capability Name="internetClient" /> <rescap:Capability Name="broadFileSystemAccess" /> </Capabilities> </Package>