Как дать разрешение на запись на диск или подключенный диск - PullRequest
0 голосов
/ 10 апреля 2019

Я просто хочу создать новый файл на моем диске C (и позже в моей сети).

Я хотел бы выбрать файл в папке с openFilePicker (это работает), а затем с помощью кнопки скопировать этот файл, например, на мой рабочий стол.

Свойство файла:

public StorageFile File { get; set; }

код openFilePicker:

public async Task GetFileAsync()
        {
            var picker = new FileOpenPicker();
            picker.ViewMode = PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.Add("*");

            File = await picker.PickSingleFileAsync();
        }

Код для сохранения:

public async Task SaveFileAsync()
        {
            try
            {
                StorageFolder test2 = await StorageFolder.GetFolderFromPathAsync(@"C:\Users\bvens\Desktop");

                await File.CopyAsync(test2, File.Name, NameCollisionOption.ReplaceExisting);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

Но у меня возникает UnauthorizedAccessException при попытке записи в "saveFileAsync" =>

System.UnauthorizedAccessException: отказ от соглашения. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

спасибо

Редактировать проблема в том, что в UWP приложение находится в другом потоке и поэтому не имеет права писать. Вам нужно попросить пользователя, чтобы ваше приложение могло перейти к целевому файлу (как в Android)

(Мы можем закрыть эту проблему)

1 Ответ

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

Когда StorageFile.CopyAsync используется для копирования файла, который зашифрован, в место назначения, которое не зашифровано, вызов не будет выполнен со следующим исключением: System.UnauthorizedAccessException: доступ запрещен.(Excep_FromHResult 0x80070005)

Я думаю, что это проблема

...