UWP Копирование файла с портативного устройства Доступ запрещен Исключение - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь читать и копировать файлы с мобильного телефона на мой P C. Для приложения достаточно прав доступа, но когда я пытаюсь вызвать функцию GetFilesAsyn c () из папки Хранилище , я получаю "Доступ запрещен. (Исключение из HRESULT : 0x80070005 (E_ACCESSDENIED)) ". Ниже приведена строка кода, которую я использую.

            StorageFolder UsbDrive = (await Windows.Storage.KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault();  //StorageFolder object that maps all removable devices as subfolders.

            var rootFolders = await UsbDrive.GetFoldersAsync();

            foreach (var itemRootFolder in rootFolders)
            {
                var allFolders = await itemRootFolder.GetFoldersAsync();
                foreach (var itemAllFolder in allFolders)
                {
                    Console.WriteLine("DisplayName:  " + itemAllFolder.DisplayName + "DateCreated:  " + itemAllFolder.DateCreated + "DisplayType:  " + itemAllFolder.DisplayType + "FolderRelativeId:  " + itemAllFolder.FolderRelativeId);
                    var myNeedFolders = await itemAllFolder.GetFoldersAsync();
                    foreach (var myNeedFoder in myNeedFolders)
                    {
                        IReadOnlyList<StorageFile> FileList = await myNeedFoder.GetFilesAsync();

                        System.Diagnostics.Debug.WriteLine("LISTING FILES:");
                        foreach (StorageFile File in FileList)
                            System.Diagnostics.Debug.WriteLine(File.Name);
                    }
                }
            }

Существуют ли другие способы получения файлов с портативного устройства в UWP? Заранее спасибо.

1 Ответ

0 голосов
/ 10 апреля 2020

UWP имеет строгое управление правами доступа к файлам в соответствии с описанием съемного хранилища в этом документе :

Возможность съемного хранилища ... отфильтровано по типу файла Ассоциации, заявленные в пакете манифеста. Например, если приложение для чтения документов объявляет сопоставление типов файлов .do c, оно может открывать файлы .do c на съемном устройстве хранения, но не файлы других типов.

Приложение сообщает об ошибке, это должно быть потому, что у вас нет связанного типа файла в папке.

Вы можете попробовать использовать FolderOpenPicker для выбора папки в съемном хранилище, это обычная практика:

var folderPicker = new FolderPicker()
{
    SuggestedStartLocation = PickerLocationId.ComputerFolder
};
folderPicker.FileTypeFilter.Add("*");
var folder = await folderPicker.PickSingleFolderAsync();
// do other things...
...