4

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

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

「プログラムファイル」ディレクトリにインストールすることで、これを行うことができます。

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

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

ユーザーのAPPDATAディレクトリに保存すると、それぞれが異なるコピーを持つことになり、あるユーザーがデータを追加すると、他のユーザーはそれを見ることができなくなります。

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

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

4

4 に答える 4

4

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

詳細については、 http://www.deez.info/sengelha/2006/02/28/windows-vista-changes/を参照してください。

于 2008-09-22T11:02:06.530 に答える
3

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

于 2008-09-22T10:57:59.287 に答える
0

具体的には、次を使用します。

SetShellVarContext all
SetOutPath $APPDATA
File "MyInsecurelySharedFile.txt"

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

于 2009-05-07T14:52:50.040 に答える
0

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

于 2008-09-22T11:11:02.127 に答える