Vista インストーラーですべてのユーザーが共有する書き込み可能なデータはどこに保存されますか?

StackOverflow https://stackoverflow.com/questions/114194

質問

私のアプリは NSIS 経由でインストールされています。

インストーラーがすべてのユーザーにプログラムをインストールするようにしたいと考えています。

これは、「program files」ディレクトリにインストールすることで実行できます。

システム上のすべてのユーザー アカウントが共有する必要があるデータベース ファイル (firebird) があります。

このデータベース ファイルを「プログラム ファイル」ディレクトリに保存すると、読み取り専用になります。

ユーザーの APPDATA ディレクトリに保存すると、それぞれに異なるコピーが作成され、あるユーザーがデータを追加しても、他のユーザーにはそれが表示されなくなります。

オプション 1 - 「プログラム ファイル」の下のアプリ ディレクトリに「データ」ディレクトリを作成し、インストーラーでこのディレクトリをすべてのユーザーが読み書きできるようにします。これにより、ユーザーの「プログラム ファイル」の仮想化が開始されず、すべてのユーザーが更新できるようになります。ファイルを共有し、お互いの変更を確認します。

他にオプションはありますか?

役に立ちましたか?

解決

すべてのユーザーのデータは %ALLUSERSPROFILE% に保存するか、パラメーター CSIDL_COMMON_APPDATA を指定して SHGetFolderPath() を呼び出して、すべてのユーザーの記憶領域を取得する必要があります。

見る http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/ 詳細については。

他のヒント

[すべてのユーザー] プロファイルの下のどこかが明らかな場所です。デフォルトで誰が読み取り/書き込みできるかについてはいくつかのルールがあると思いますが、MS ドキュメントでは、別のものが必要な場合はサブディレクトリを作成し、インストーラーで ACL を直接設定することを推奨しています。

これはセキュリティ ホールです。次を参照してください。 http://blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx

具体的には以下を使用します。

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

を参照してください。 NSIS スクリプト リファレンス 詳細については。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top