none
(UWP) C# System.UnauthorizedAccessException RRS feed

  • Вопрос

  • Добрый день.

    Недавно начал изучать C#, поэтому задаю возможно "нубский" вопрос.

    Пытаюсь проделать какие либо манипуляции с файлами по кнопке (открыть, создать, загрузить xml файл и т.п.)

    и постоянно валится исключение - нет доступа к папке, хотя у пользователя полные права, у папки для всех настроен полный доступ.

    Исключение типа "System.UnauthorizedAccessException" возникло в mscorlib.ni.dll, но не было обработано в коде пользователя

    Дополнительные сведения: Access to the path 'C:\Assets' is denied.

    Никак не могу понять куда копать дальше.

    Ниже пример кода.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using System.Linq;
    using System.Xml;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using System.Threading.Tasks;
    using Windows.Storage;
    
    // Документацию по шаблону элемента "Пустая страница" см. по адресу http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
    
    namespace TEST
    {
        /// <summary>
        /// Пустая страница, которую можно использовать саму по себе или для перехода внутри фрейма.
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
    
            }
    
            private async void MyButton_Click(object sender, RoutedEventArgs e)
            {
                string path = @"C:\Assets\01.txt";
                await Task.Run(() =>
                {
                    using (StreamWriter sw = File.CreateText(path))
                    {
                        sw.WriteLine("Hello");
                        sw.WriteLine("And");
                        sw.WriteLine("Welcome");
                    }
    
                });
            }
        }
    }
    

    2 октября 2016 г. 8:58

Ответы

Все ответы

  • UWP до невозможности ограничены в правах, чтоб защитить пользователя от произвола разработчика приложений. Для работы с файлами необходимо это указать в манифесте приложения, причем доступ получите не ко всему диску, а лишь к исбранным папкам. Если нужно получить доступ к конкретному файлу, то пользователь должен его указать через механизм выбора файла. Если операция по открытию частая, то можно запомнить, если не ошибаюсь, до 20 файловых выборов для повторного использования. Простой доступ к файловой системе, как вы пытаетесь реализовать, не возможен.
    2 октября 2016 г. 9:26
  • Тут можете посмотреть как работать с файлами.
    2 октября 2016 г. 9:31