Ошибка при доступе к availablefreespace / totalsize в driveinfo в uwp

Я могу составить список локальных дисков с помощью метода DriveInfo.GetDrives (). Кроме того, я получаю / получаю имя диска, используя свойство Name. Но я получаю сообщение об ошибке: «System. UnauthorizedAccess Exception:« Доступ к пути '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" в блок тега пакета и <rescap: Capability Name = "broadFileSystemAccess" /> внутри блок тегов возможностей в файле Package.appxmanifest в моем проекте.

0
0
604
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу получить общее и доступное дисковое пространство для некоторые моих дисков, используя этот код:

        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>

Отлично! У вас есть свойства через StorageFolder! Я боролся со свойствами диска вместо того, чтобы передавать его путь в StorageFolder. Отличная идея!

Mg Bhadurudeen 17.09.2018 08:48

Другие вопросы по теме