3

私は自分のプロジェクトを始めたばかりで、どのテクノロジを使用すればよいか迷っています。少し調べてみたところ、WinRT API は快適で、UI のタイル グリッドの概念がとても気に入っています。

唯一の問題は、アプリが大量のデータ (重要なデータ) を生成し、ローカル マシンのどこかに保存する必要があることです。「どこか」とは、OS とは異なるパーティションを使用することを意味します。

それでは、この単純なコードを試してみませんか。

await Windows.Storage.PathIO.WriteTextAsync(@"d:\tests\test.txt", "Hello World");

だってE_ACCESSDENIED、だから。Windows 8 は、「アクセスが拒否されました」と叫びながら私を平手打ちします。

好きな方法でデータを保存する方法や、証拠Win8が強すぎる方法はありますか?h4x0r

いいえ、「デスクトップ アプリケーションを作成する」は正解ではありません。

4

2 に答える 2

3

まず、設定データを保存する場合、次の 2 つのオプションがあります。

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;

ローミング プロファイル スペースを使用するため、クラウドまたはドメイン プロファイルに保存されます。

Windows.Storage.ApplicationDataContainer settings = Windows.Storage.ApplicationData.Current.LocalSettings;

ローカル プロファイル スペースを使用するもの

もちろん、それらは両方ともユーザー %appdata% の下に最終的に保存されますが、すべてを正しく理解していれば、ローミングのものは実際に同期されます:)

したがって、別のパーティションに保存したいアプリケーション データについては、次のようになります。

まず、FolderPicker を使用して場所を選択する必要があります

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
//Add some other yada yada to make the picker work as needed
StorageFolder folder = await folderPicker.PickSingleFolderAsync();

次に、選択したフォルダーをアクセスリストに入れ、このフォルダーの使用が許可されていることを覚えておく必要があります

StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);

そうすれば、アプリケーション/システムは、将来このフォルダーの使用が許可されていることを追跡します。選択したフォルダーは、アクセスできるファイル システム内の任意の場所である可能性があります。

最後に、次にアプリを起動したときに選択したフォルダーを元に戻したくない場合は、単に逆の操作を行います。

StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync("TargetFolderToken",AccessCacheOptions.FastLocationsOnly);

値 FastLocationsOnly は、ローカル ドライブのみを返すことを意味します。「TargetFolderToken」は、フォルダを FutureAccessList に格納したときに使用した識別子と同じです。

于 2013-03-23T11:59:12.680 に答える
3

Windows ストア アプリでのファイル アクセスとアクセス許可について知っておく必要があるすべて。

于 2012-11-07T09:20:53.607 に答える