.NET (具体的には C#) のすべてのユーザー (管理者または制限付き) が使用できるアプリケーションがあります。
アプリケーションを最初に起動すると、その後のすべての起動で必要ないくつかのファイルが C:\Documents and Settings\All Users\Documents\ に作成されます。
XP の制限付きユーザーがアプリケーションを起動する最初のユーザーである場合、ファイルは正常に作成され、制限付きユーザーと管理者の両方が正常に実行できます。
ただし、管理者 (または別の制限付きユーザーと推測しています) が最初にアプリケーションを起動した場合、制限付きユーザーはアプリケーションを実行できません。
管理者によって作成された場合に読み書きできない 2 つのファイルは、Log4Net ログ ファイルと SQLite db ファイルです。
SQLite データベース ファイルは、単純な .NET File.Copy(sourcepath, destinationpath) で作成されています。sourcepath は、アプリケーションと共にインストールされるシード データベース ファイルです。したがって、最初の実行時に C:\Program Files\app install\seed.db からコピーされます。
ファイルをコピーするときにファイルのアクセス許可を設定する方法はありますか? File.SetAccessControl() おそらく?それがどのように機能するかはわかりません。
もう 1 つの問題は、log4Net ローリング ファイル アペンダーが古いファイルをロールして新しいファイルを作成しないことです。古いファイルは管理者ユーザーがアプリを実行したときに作成されたものだからです。
何か案は?皮肉なことに、これはすべて Vista で制限付き/管理者アカウントを使用して完全に正常に機能します。これは、管理者/制限付きアカウントを使用した XP でのみ発生します。