如何获得对KnownFolders.DocumentsLibrary的访问权限

时间:2014-05-15 14:28:22

标签: c# windows-8 windows-runtime windows-store-apps

我试图将一串用户输入保存到Windows运行时应用中的文件中。但是我收到错误System.UnauthorizedAccessException。如何访问此库?

    static private async Task WriteDataToFileAsync(string fileName, string content)
    {
        byte[] data = Encoding.Unicode.GetBytes(content);

        var folder = KnownFolders.DocumentsLibrary;

        var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);


        using (var s = await file.OpenStreamForWriteAsync())
        {
            await s.WriteAsync(data, 0, data.Length);
        }
    }

3 个答案:

答案 0 :(得分:3)

Visual Studio 2013中的“文档库”功能已被删除,因为它仅适用于Windows应用商店公司帐户。如果没有此功能,您将获得“访问被拒绝”。

有关详情,请参阅此处:http://lunarfrog.com/blog/2013/07/05/documents-library-capability-winrt/

答案 1 :(得分:1)

像这样,请注意'扩展程序'我指定了我想要访问的文件类型(.txt),然后在'功能'我添加了' documentsLibrary'。

然后从那里实际写入或访问文件,就像这样。

 var file = await KnownFolders.DocumentsLibrary.CreateFileAsync("myFile.txt", CreationCollisionOption.ReplaceExisting);
                        await FileIO.WriteTextAsync(file, data);



<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
  <Identity Name="testapp" Publisher="CN=test.test" Version="1.5.0.3" />
  <Properties>
    <DisplayName>test.MetroApp</DisplayName>
    <PublisherDisplayName>test.test</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Prerequisites>
    <OSMinVersion>6.3.0</OSMinVersion>
    <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  </Prerequisites>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="test.MetroApp.App">
      <m2:VisualElements DisplayName="test.MetroApp" Square150x150Logo="Assets\test.png" Square30x30Logo="Assets\SmallLogo.png" Description="test.MetroApp" ForegroundText="light" BackgroundColor="#464646">
        <m2:SplashScreen Image="Assets\test.scale-620.png" BackgroundColor="#464646" />
        <m2:InitialRotationPreference>
          <m2:Rotation Preference="landscape" />
        </m2:InitialRotationPreference>
      </m2:VisualElements>
      <Extensions>
        <Extension Category="windows.fileTypeAssociation">
          <FileTypeAssociation Name="1">
            <DisplayName>AccessTXT</DisplayName>
            <SupportedFileTypes>
              <FileType>.txt</FileType>
            </SupportedFileTypes>
          </FileTypeAssociation>
        </Extension>
      </Extensions>
    </Application>
  </Applications>
  <Capabilities>
    <Capability Name="internetClient" />
    <Capability Name="privateNetworkClientServer" />
    <Capability Name="musicLibrary" />
    <Capability Name="documentsLibrary" />
  </Capabilities>
</Package>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

根据the docs“您的应用必须使用应用清单文件中的文件类型关联声明来明确声明将在文档库中访问或创建的文件类型(扩展名)”。