【问题标题】:Access is denied when trying to CreateFileAsync in InstalledLocation StorageFolder?尝试在 InstalledLocation StorageFolder 中创建文件异步时访问被拒绝?
【发布时间】:2012-09-03 23:09:18
【问题描述】:

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

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

我也试过了

var storageFolder = await StorageFolder.GetFolderFromPathAsync("ms-appx:///");

并得到“值不在预期范围内”

我可以在Windows.Storage.ApplicationData.Current.LocalFolder 中将CreateFileAsync 转至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);

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

【问题讨论】:

    标签: c# file-io windows-8 microsoft-metro


    【解决方案1】:

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

    StorageFolder localFolder = ApplicationData.Current.LocalFolder;
    

    Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
    

    取决于数据的生命周期。

    【讨论】:

    • 如果我没记错的话,安装目录及其子目录是只读位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多