首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何锁定打开的StorageFile以防止用户在我的应用程序之外重命名它?

如何锁定打开的StorageFile以防止用户在我的应用程序之外重命名它?
EN

Stack Overflow用户
提问于 2016-05-19 12:57:13
回答 2查看 628关注 0票数 1

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

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

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

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

“操作无法完成,因为该文件是在Runtime中打开的。请关闭该文件,然后再试一次。”

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

代码语言:javascript
复制
// 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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 13:09:08

您可以在文件上设置一个ShareMode,如果将其设置为"None“,那么只要您将该文件保持打开,其他任何人都无法打开或修改该文件:

代码语言:javascript
复制
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

这对你有帮助吗?

票数 0
EN

Stack Overflow用户

发布于 2020-11-06 19:20:38

我相信这应该是你想要的:

代码语言:javascript
复制
file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowOnlyReaders);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37323898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档