我试图在Windows 8.1中打开并读取Windows应用商店应用中的文件内容。这是为我工作,而不在大多数情况下一个问题,但如果该文件是在Word 2013或Excel中打开我得到一个异常:UnauthorizedAccessException - Access is denied
读取已在Word中打开的文件
在我看来,必须有读取文件的方式,因为Windows 8 Mail应用程序能够发送相同的文件,在Word中打开,作为电子邮件附件没有任何问题。
下面是我使用的代码,这是非常简单的:
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.FileTypeFilter.Add("*");
IReadOnlyList<StorageFile> storageFiles = await filePicker.PickMultipleFilesAsync();
foreach (StorageFile storageFile in storageFiles)
{
try
{
using (var stream = await storageFile.OpenReadAsync())
{
}
}
catch (UnauthorizedAccessException e)
{
// Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
}
}
我也试过的storageFile.OpenReadAsync()
各种排列,如OpenStreamForReadAsync
,OpenAsync(FileAccessMode.Read)
,OpenSequentialReadAsync
和FileIO.ReadBufferAsync
,都具有相同的结果。
我不认为FileStream在WinRT中可用? – grimus
对不起。 (你是对的,FileStream似乎不存在于WinRT中)当我在最初的问题中看到Excel和Word的引用时,我回头讨论了Windows更常见的问题。 (我会看到关于更新我的SO配置文件以排除WinRT) – Wonderbird