Windows runtime WinRT模拟CreateFile';DWS共享模式?

Windows runtime WinRT模拟CreateFile';DWS共享模式?,windows-runtime,Windows Runtime,在Win32 CreateFile()API中,我可以在打开文件时指定dwShareMode,以防止在打开文件时删除或更改该文件 我正在寻找WinRT中的C#模拟。假设我打开一个文件: StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("x.txt"); IRandomAccessStreamWithContentType iras = await sf.OpenRead

在Win32 CreateFile()API中,我可以在打开文件时指定dwShareMode,以防止在打开文件时删除或更改该文件

我正在寻找WinRT中的C#模拟。假设我打开一个文件:

StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("x.txt");
IRandomAccessStreamWithContentType iras = await sf.OpenReadAsync();
然后,从CMD.EXE的实例,我可以将CD刻录到…\AppData\Local\Packages\zzz\LocalState目录,并在WinRT应用程序打开该文件时将其删除


我可以在我的C代码中做什么来导致删除失败?

不直接可用。这对于WinRT来说是典型的,它通过简单地不公开功能,强制应用程序在api级别玩得很好,而不是占用资源。这也是一个相当严重的可用性问题,当用户离开应用程序时,应用程序可能会暂停很长时间。保持文件锁定那么长时间当然是非常有问题的,用户没有很好的方法来诊断问题

当您使用LocalFolder时,这并不是一个问题,没有其他人可以做到这一点。好吧,不算有上帝账户的人


有一个后门可用,您可以使用pinvoke CreateFile2()。允许商店应用程序使用的CreateFile()版本。它有一个dwShareMode参数。在C#程序中使用它没有什么乐趣,商店验证被拒绝的几率也不是零。

好吧,如果文件句柄在很长一段时间内保持打开状态(而且会打开),我不明白为什么不公开锁定会大大节省资源。但我感谢您的回复。打开的文件和锁定的文件有着天壤之别。这与“节省资源”无关,一切都与可用性有关。