1

私のアプリケーションは、いくつかの情報をファイルに書き込み、それをマシンに共通 (すべてのユーザーに共通) に保つ必要があります。

現在、C:\Documents and Settings\All Users\Application Dataに保存しました

しかし問題は、ファイルが管理者によって作成されるたびに、他のすべてのユーザーがそのファイルへの書き込み権限を持っていないことです。

しかし、すべてのユーザーがファイル内のデータを変更できるように、すべてのユーザーにファイルへの書き込み権限が必要です。誰でもこれで私を助けることができますか?

編集:すべてのユーザーに共通の xml ファイルを保存する必要があります。

ありがとう

4

3 に答える 3

0

File.SetAccessControl()メソッドとFileSecurityクラスを勉強することをお勧めします。特に、FileSecurityドキュメントには、特定のファイルのファイルアクセス制御リスト(権限セット)を変更する完全な例が記載されています。これは、その例の簡略化されたバージョンであり、すべての人に次の読み取りおよび書き込み許可を与えますC:\TEMP\junk.txt

using System;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;

class WorldWrite
{
    static void Main()
    {
        string filename = @"C:\TEMP\junk.txt";
        if (!File.Exists(filename)) {
            Console.WriteLine("No such file " + filename);
            return;
        }

        /* Get the previous ACL, add a rule to give everyone read
         * and write permission, and write back the resulting ACL. */
        FileSecurity fileACLs = File.GetAccessControl(filename);
        fileACLs.AddAccessRule(new FileSystemAccessRule(
            // For everyone 
            new SecurityIdentifier (
                WellKnownSidType.WorldSid, 
                null /* domain SID; ignored for Everyone */
            ),
            // Allow read and write (of data and metadata), 
            // but not delete or execute
            FileSystemRights.Read | FileSystemRights.Write,
            AccessControlType.Allow
        ));
        File.SetAccessControl(filename, fileACLs);
        Console.WriteLine("Success!");
    }
}

また、共有アプリケーションのデータディレクトリをどのように指定しているかについても心配しています。名前をハードコーディングしている場合C:\Documents and Settings\All Users\Application Data、そのコードは英語以外のバージョンのWindows、またはVistaまたはWindows7では機能しません。SpecialFolder列挙型を使用して、使用する適切なディレクトリを見つける方がよい場合があります。

于 2011-07-04T06:57:15.240 に答える
0

ClickOnce配置を使用している場合、共通フォルダーの読み取り/書き込みを行うには特権を昇格する必要があり、ClickOnceアプリはそれを実行しないため、これを行うのは困難です。

必要な処理を実行する小さなexeファイルを作成し、clickonceアプリケーションでそれを呼び出して、特権を昇格させることができます。それはあなたが持っている唯一のオプションについてです。

于 2011-07-07T23:10:32.067 に答える
0

レジストリはあなたにとって良い場所ですか?(保存したいものによって異なります)。すべてのユーザーがアクセスできるように、HKLM ハイブにノードを作成できます。

于 2011-07-04T06:13:26.693 に答える