3

Win32 CreateFile() API では、ファイルを開くときに dwShareMode を指定して、開いている間にそのファイルが削除または変更されるのを防ぐことができます。

WinRT で C# アナログを探しています。ファイルを開くとします。

StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("x.txt");
IRandomAccessStreamWithContentType iras = await sf.OpenReadAsync();

次に、CMD.EXE のインスタンスから ...\AppData\Local\Packages\zzz\LocalState ディレクトリに移動し、WinRT アプリが開いている間にファイルを削除します。

その削除を失敗させるには、C# コードで何ができますか?

4

1 に答える 1

1

直接入手できません。これは WinRT では一般的であり、機能を公開しないだけで、アプリが API レベルでリソースを占有するのではなく適切にプレイするように強制します。これはかなり深刻なユーザビリティの問題でもあり、ユーザーがアプリから切り替えると、アプリが非常に長い間停止する可能性があります。もちろん、ファイルを長期間ロックしたままにしておくことは非常に問題があり、ユーザーは問題を診断する良い方法がありません。

とにかく LocalFolder を使用する場合は問題ではありません。他の誰もそれに到達することはできません。まあ、神のアカウントを持つ人を数えません。

利用可能なバックドアがあり、CreateFile2() を pinvoke できます。Store アプリで使用できる CreateFile() のバージョン。dwShareMode 引数があります。これを C# プログラムで使用するのは少し面白くないため、ストアの検証が拒否される可能性はゼロではありません。

于 2013-02-07T23:47:23.790 に答える