1

我有一个在桌面上的 Windows 10 上运行的基本 UWP 应用程序。该应用程序定义了一种自定义文件格式,并允许用户打开和编辑文档。

我使用 aFileOpenPicker让用户选择文件。

我的问题是:如何防止用户在我的应用程序外部(例如在 Windows 资源管理器中)重命名/移动/删除文档,而它在我的应用程序中打开?

Word Mobile 锁定打开的文档。如果我尝试在 Windows 资源管理器中重命名打开的文档,则会收到错误消息:

“操作无法完成,因为文件已在运行时代理中打开。关闭文件并重试。”

我想实现同样的目标。我怀疑 Word Mobile 应用程序正在以特殊模式打开文件或以某种方式锁定它。我尝试了各种Storagefile.OpenXXX()方法,但没有运气:

// None of these seem to exclusively lock the file:
stream = await file.OpenStreamForWriteAsync();
stream = await file.OpenTransactedWriteAsync();
stream = await file.OpenAsync(FileAccessMode.ReadWrite);
stream = await file.OpenReadAsync();
4

2 回答 2

1

我相信这应该是您正在寻找的电话:

file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowOnlyReaders);

来自: https ://docs.microsoft.com/en-us/uwp/api/windows.storage.storageopenoptions?view=winrt-19041

于 2020-11-06T19:20:38.647 回答
0

您可以在文件上设置 ShareMode,如果将其设置为“无”,那么只要您保持打开状态,其他人就无法打开或修改此文件:

new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

这使用 System.IO,您应该可以使用它。此处的完整文档: https ://msdn.microsoft.com/en-us/library/system.io.fileshare(v=vs.110).aspx

这对你有帮助吗?

于 2016-05-19T13:09:08.863 回答