我有一个基本的UWP应用程序运行在Windows 10的桌面上。该应用程序定义了自定义文件格式,并允许用户打开和编辑文档。
我使用FileOpenPicker让用户选择文件。
我的问题是:在我的应用程序中打开文档时,如何防止用户重命名/移动/删除应用程序之外的文档(例如在Windows资源管理器中)?
Word Mobile锁定打开的文档。如果我试图在Windows资源管理器中重命名打开的文档,则会得到一个错误:
“操作无法完成,因为该文件是在Runtime中打开的。请关闭该文件,然后再试一次。”
我想实现同样的目标。我怀疑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();发布于 2016-05-19 13:09:08
您可以在文件上设置一个ShareMode,如果将其设置为"None“,那么只要您将该文件保持打开,其他任何人都无法打开或修改该文件:
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
这对你有帮助吗?
发布于 2020-11-06 19:20:38
我相信这应该是你想要的:
file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowOnlyReaders);来自:https://learn.microsoft.com/en-us/uwp/api/windows.storage.storageopenoptions?view=winrt-19041
https://stackoverflow.com/questions/37323898
复制相似问题