在InstalledLocation StorageFolder中尝试CreateFileAsync时拒绝访问?

isa*_*isa 9 c# file-io microsoft-metro windows-8

我在InstalledLocation StorageFolder中尝试CreateFileAsync时拒绝Access

StorageFolder storageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = await storageFolder.CreateFileAsync("fileNmae", Windows.Storage.CreationCollisionOption.ReplaceExisting);
Run Code Online (Sandbox Code Playgroud)

我也试过了

var storageFolder = await StorageFolder.GetFolderFromPathAsync("ms-appx:///");
Run Code Online (Sandbox Code Playgroud)

得到"价值不在预期的范围内"

我可以去周围并CreateFileAsyncWindows.Storage.ApplicationData.Current.LocalFolder随后CopyAsync以InstalledLocation StorageFolder?

StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file = await storageFolder.CreateFileAsync("fileName", Windows.Storage.CreationCollisionOption.ReplaceExisting);

StorageFolder installedLocationFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var result = await file.CopyAsync(installedLocationFolder, "fileName", Windows.Storage.NameCollisionOption.ReplaceExisting);
Run Code Online (Sandbox Code Playgroud)

但是CreateFileAsync在InstalledLocation中,StorageFolder会拒绝访问?是因为安全原因还是我在这里编码错了?

Jef*_*and 15

应用程序的安装目录是只读位置.此外,不建议您将数据文件写入已安装的位置.如果您需要存储数据,这仅供应用程序使用,您应该使用

StorageFolder localFolder = ApplicationData.Current.LocalFolder;
Run Code Online (Sandbox Code Playgroud)

要么

Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
Run Code Online (Sandbox Code Playgroud)

取决于数据的生命周期.