2017-09-23 16 views
1

私のVB.NETアプリケーションは、ローカルマシンにテキストファイルを格納する必要があります。アプリケーションが起動するたびに、マシン内のユーザーに関係なく、そのテキストファイルに情報を書き込む必要があります。管理権限なしで共通のユーザーデータを配置する場所

1)レジストリはオプションです。ユーザーには、HKEY_LOCAL_MACHINE \ Softwareへの書き込みアクセス権がありません。 HKEY_CURRENT_USER \ Softwareは、ユーザーが最初にアプリケーションを開くたびに、ライセンスのロック解除キーを提供する必要があるため、優先されません。私は、ライセンス解除キーが、どのユーザーによってもインストールされた後に一度提供されることを望みます。ライセンス解除キーはテキストファイルに書き込まれます。

2)私はEnvironment.SpecialFolder.CommonApplicationDataを試し、テキストファイルを保存するフォルダを作成しました。管理者がインストールすると正常に動作し、管理者はアプリケーションを開くことができます。ユーザーが同じマシンにログインすると、アプリケーションはスプラッシュ画面を表示するように管理しますが、動作を停止します。エラーメッセージは表示されず、タスクマネージャの[詳細]タブで消えます。私はまだEnvironment.SpecialFolder.CommonApplicationDataのテキストファイルを見ることができます。

3)前にこの問題に関連してother questionを確認しました。コメントの1つは、隔離保管を示唆しています。しかし、隔離されたストレージを使用するとき、上記(2)と同じ結果を得るかどうかはわかりません。

質問:

1)すべてのユーザーに共通であり、すべてのユーザーが書き込みを持っている必要があり、ローカルマシンにライセンスファイル格納する必要があり、そのライセンスファイルへのアクセスを読みますか?

+0

インストール時にライセンスキーが書き出された場合(管理者権限で)、誰でも問題なく「CommonApplicationData」から*読み込むことができるはずです。代わりに、それを削除することに興味がないので、パブリックフォルダに保存することもできます – Plutonix

+0

'CommonApplicationData'は適切な場所です。最初にファイルを作成するときにアクセス権を変更することはできますが、あなたが本当に必要な場合を除き、世界は書き込み可能です。おそらく、アプリケーションをクラッシュさせるバグを修正する必要があります。ファイルを開くときに誤って書き込みアクセスを要求している可能性が最も高いです。 –

+0

@ HarryJohnston、アプリケーションは起動時にテキストファイルを_write_する必要があります。 'CommonApplicationData'は、ユーザがログインしてアプリケーションを起動するたびに、私のアプリケーションがテキストファイルを読み書きする正しい場所ですか? – hunterex

答えて

0

その他の考慮事項を除いて、CommonApplicationDataは依然としてこのファイルの適切な場所です。

インストーラが最初にファイルを作成するときにhave it set permissionsINTERACTIVEが書き込むことができるようにします。理想的には、FILE_GENERIC_WRITE権限のみを付与して、管理者以外のユーザーがファイルを削除したり、権限を再度変更することはできないようにしてください。

関連する問題