代码之家  ›  专栏  ›  技术社区  ›  greg

在Windows 10 Universal App UWP中创建新目录

  •  3
  • greg  · 技术社区  · 9 年前

    我正在尝试使用此方法创建一个目录,该方法在应用程序中按下按钮后启动,并向其中添加一个文件:

    DirectoryInfo d = new DirectoryInfo(@"..\\newFolder\\");
    FileInfo f = new FileInfo(@"..\\newFolder\\foo.txt");
    if (!d.Exists)
    {
        d.Create();
    }
    if (!f.Exists)
    {
        f.Create().Dispose();
    }
    

    以下是执行此操作后在我的通用应用程序中产生的错误:

    An exception of type 'System.UnauthorizedAccessException' 
    occurred in System.IO.FileSystem.dll but was not handled in user code
    
    Additional information: Access to the path
     'C:\Users\[username]\Documents\MyApp\bin\x86\Debug\AppX\newFolder' is denied.
    

    熟悉这个错误或知道任何建议的人吗?

    编辑 除以下内容外,这是在Windows 10通用应用程序环境中使用文件系统的绝佳资源:文件访问和权限(Windows运行时应用程序) https://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh758325.aspx

    4 回复  |  直到 8 年前
        1
  •  4
  •   Peter Torr    9 年前

    问题是,您正在尝试在应用程序的安装文件夹中创建文件,而通用应用程序不允许这样做。只能在本地数据文件夹中创建文件夹。

    试试看:

    using Windows.Storage;
    
    var localRoot = ApplicationData.Current.LocalFolder.Path;
    DirectoryInfo d = new DirectoryInfo(localRoot + "\\test");
    if (!d.Exists)
      d.Create();
    
        2
  •  1
  •   Ajaya Nayak    8 年前

    试试这个

    public static async void  WriteTrace()
    {
      StorageFolder localFolder = ApplicationData.Current.LocalFolder;
      StorageFolder LogFolder = await localFolder.CreateFolderAsync("LogFiles", CreationCollisionOption.OpenIfExists);
     }
    
        3
  •  0
  •   MrRolling    9 年前

    每个应用程序都在特定用户下运行,并继承其特权、权限、限制和。。。 所以 您的应用在其下运行的用户没有足够的权限,无法创建文件夹 因此,您可以:

    • 使用 模拟 (搜索模拟c#),并将您的应用程序编码为以具有所需权限的其他用户(如管理员)身份运行。之后,应用程序始终以管理员(或特定用户)身份自动运行。(如果您将应用程序模拟为管理员,请注意安全问题)
    • 以管理员(或具有足够权限的用户)身份手动运行应用程序。(对于管理员,右键单击您的app.exe,然后单击“运行方式…”)
    • 更改工作目录的安全设置和访问限制(例如C:\Users[用户名]\Documents\MyApp\bin\x86\Debug\AppX\newFolder),并给出 写入存取 到您的用户名
        4
  •  0
  •   Muneeb Zulfiqar    9 年前

    以管理权限运行应用程序,应该可以完成。