以管理员身份运行时未经授权的访问异常

时间:2018-03-09 09:17:03

标签: c# uwp visual-studio-2017 windows-10 unauthorizedaccessexcepti

我知道有很多关于获得

的问题
  

“System.UnauthorizedAccessException的”。

但是,我无法在任何这些问题中找到解决方案,因为大多数答案都会引用其中一个Microsoft帮助页面。

我的情况: 我尝试将一些用户输入保存为.csv,因此我可以在需要时导入它。

我的代码:

var csv = new System.Text.StringBuilder();
            string dir = Path.Combine(Environment.GetFolderPath
            (Environment.SpecialFolder.DesktopDirectory), "test.csv");

            var newLine = string.Format("{0},{1},{2},{3},{4}", txtFirstName.Text, txtLastName.Text, txtEmail.Text,
                txtPhone.Text, txtPlace.Text);

            csv.AppendLine(newLine);

            if (!File.Exists(dir))
            {

                using (FileStream fs = File.Create(dir))
                {
                    Byte[] info = new System.Text.UTF8Encoding(true).GetBytes("FirstName,LastName,Email,Phone,Place");
                    // Add headers to the file.
                    fs.Write(info, 0, info.Length);
                }
            }

            try
            {
                File.AppendAllText(dir, csv.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }

正如您所看到的,我正在尝试将所有内容写入我的桌面,名为“test.csv”。我以管理员身份运行Visual Studio,而我桌面上的文件不是只读的。 anybodoy知道为什么这仍然失败?

编辑:我在桌面计算机上将其作为标准UWP-App运行。

1 个答案:

答案 0 :(得分:2)

从UWP流程文件访问受到限制。要写入桌面(或任意位置),您的应用程序将需要使用文件保存对话框并让用户确认/选择位置。然后,您将能够保存到桌面或用户决定选择的任何位置。

在即将推出的针对Windows 10的Spring 2018更新中,我们将为UWP应用程序引入一项新功能(' broadFileSystemAccess'),以便更好地实现这一目标。如果您在清单中声明此功能,应用程序将在首次启动时请求用户同意以进行广泛的文件系统访问,然后您将能够访问当前用户有权访问的所有位置。

如果您需要适用于早期版本的Windows 10(在2018年春季更新之前)的解决方案,并且文件对话框不是一个可行的选项,那么您可以考虑在处理文件操作的UWP包中添加一个完整的进程代表您的UWP流程。您可以通过FullTrustProcessLauncher API从UWP启动该完整信任流程:https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.fulltrustprocesslauncher