0

我有以下一段代码

    // Point to c:\users\yancheng\documents\visual studio 2012\Projects\App5\App5\bin\x86\Debug\AppX
    StorageFolder storageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;

    StorageFile file = await storageFolder.CreateFileAsync("1000.txt");

    if (file != null)
    {
        using (IRandomAccessStream writeStream = await file.OpenAsync(FileAccessMode.ReadWrite))
        {
            using (DataWriter dataWriter = new DataWriter(writeStream))
            {
                dataWriter.WriteInt32(1000);
            }
        }
    }

我已通过 启用所有权限Package.appxmanifest。但是,我不确定为什么我仍然UnauthorizedAccessExceptionstorageFolder.CreateFileAsync.

还有什么我错过的吗?

4

2 回答 2

2

您正在尝试在应用程序的安装文件夹中创建一个文件。此位置是只读位置(请参阅http://msdn.microsoft.com/en-us/library/windows/apps/hh967755.aspx)。

如果应用程序是由 Visual Studio 安装的,那么奇怪地将文件复制到此文件夹并从中删除文件是可能的,我在 Microsoft Connect 中报告了这个错误。总而言之,应用程序应该无法更改安装文件夹的任何内容。

应用程序只允许写入通过 ApplicationData 和 KnownFolders 到达的文件夹。在后一种情况下,必须声明相应的功能和文件类型。

于 2012-10-30T07:23:56.510 回答
1

根据您上面的评论,我假设您已经检查了 package.appxmanifest 中的“文档库”功能。

查看StorageFolder.CreateFileAsync 文档中的备注。它说:“如果您尝试在库或文件组等虚拟文件夹中创建文件,此方法可能会失败。” 然后在示例部分,它显示了使用 Windows.Storage.KnownFolders.documentsLibrary.createFileAsync() 在文档库中创建新文件的不同方法。你可以试试看它是否有效?

于 2012-10-25T03:37:29.140 回答