我正在尝试在运行UWP应用程序时创建。
我有以下代码:
$('#Menunavigation').on('change',
function() {
alert('Clicked.');
}
);
但是这句话:
string documentsPath = Package.Current.InstalledLocation.Path;
System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
Task.Factory.StartNew(async () =>
{
await Package.Current.InstalledLocation.CreateFolderAsync("Data");
mre.Set();
});
mre.WaitOne();
引发以下错误:
“访问被拒绝。(HRESULT异常:0x80070005 (E_ACCESSDENIED))“}
查看this link: UWP File access permissions,它说明了以下内容:
创建新应用时,您可以访问以下文件系统 默认位置:
应用程序安装目录。安装应用程序的文件夹 在用户的系统上。
有两种主要方法可以访问应用中的文件和文件夹 安装目录:
您可以检索代表您应用安装的StorageFolder 目录,像这样:
await Package.Current.InstalledLocation.CreateFolderAsync("Data");
所以我认为我的代码会起作用。所以我的问题是如何使用UWP应用程序创建文件夹?
答案 0 :(得分:12)
您无法在InstalledLocation中创建文件夹MSDN:
...应用程序的安装目录是只读位置......
尝试使用本地文件夹:
ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");
答案 1 :(得分:4)
使用 ApplicationData.Current.LocalFolder.Path 而不是 Package.Current.InstalledLocation.Path
string documentsPath = ApplicationData.Current.LocalFolder.Path;
System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
Task.Factory.StartNew(async () =>
{
await ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");
mre.Set();
});
mre.WaitOne();
Package.Current.InstalledLocation.Path为您提供了使用visual studio调试器运行所有代码和资源的路径,该调试器通常是源代码的调试文件夹。这不能通过UWP API库访问,这通常在.Net应用程序(win32)中可用。
UWP应用对文件夹“ C:\ Users \ {userprofile} \ AppData \ Local \ Packages \ {packagenameguid} \” 具有读/写权限您可以创建应用程序运行时在此位置的文件夹/文件。