windows-runtime - 与 CreateFile 的 dwShareMode 类似的 WinRT 是什么?

标签 windows-runtime

在 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 时,这不是问题,没有其他人可以访问它。好吧,不算有上帝账户的人。

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

关于windows-runtime - 与 CreateFile 的 dwShareMode 类似的 WinRT 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759553/

相关文章:

c# - 控制台应用程序中 WCF 托管服务中的 MaxReceivedMessageSize

c# - 将 BitmapImage 设置为 null 时内存未释放

c++ - WinRT __FUNCTION__ 未定义

node.js - Node : could not find assembly

c# - ListViewItem IsSelected Binding - 适用于 WPF,但不适用于 WinRT

windows-8 - 是否可以从非 Metro 应用程序使用 WinRT?

windows-runtime - 将字典绑定(bind)到 WinRT 列表框

c# - 将 GridLength 转换为 Double

c# - WebView Source - 自动认证

xaml - 在 Windows 8.1 中创建主题