0

基本的に、すべてのユーザーが変更できる特定の設定を持つ C# アプリケーションがありますが、これらの設定をすべてのユーザーに適用したいと考えています。(正確な実装は、フォルダー パスや com ポートなどのユーザー固有ではなく、コンピューター固有のアイテム用です) これまでのところ、appSettings を使用してこれを実装し、うまく機能していますが、ユーザーがアクセス許可を持っていない場合、これは機能しなくなります。 Program Files ディレクトリに書き込みます。

appSettings、userSettings、またはレジストリの値を利用して、この状況に最適に対処する方法についての提案を探しています。私が使用するソリューションは、管理者であるユーザーだけでなく、管理者ではないユーザーに対しても機能する必要があります。この種の要件の「ベスト プラクティス」と見なされるものは何ですか?

4

2 に答える 2

2

読み取り/書き込みが必要なすべての設定を含む XML ファイルを書き込もうとします。
このファイルは、ProgramData などのよく知られたフォルダーに保存できます (Enviroment.SpecialFolder.CommonApplicationData を使用)。

これを行う最も簡単な方法は、データテーブル WriteXml および ReadXml の組み込みメソッドを使用することです。
データテーブルを使用して設定を内部的にロードおよび保存し、個々の設定 (データテーブルの行) を取得して設定するメソッドを提供するクラスを実装できます。

public class MyAppSettings
{
    // Where to store your settings
    private DataTable _storage = null;

    public MyAppSettings()
    {
       string settingFile = Path.Combine(Environment.GetFolderPath
                            (Environment.SpecialFolder.CommonApplicationData), 
                            "MyAppName", "MyAppSettings.xml");
       _storage = new DataTable();
       _storage.ReadXml(settingFile);
    }
    public void Save()
    {
       string settingFile = Path.Combine(Environment.GetFolderPath
                            (Environment.SpecialFolder.CommonApplicationData), 
                            "MyAppName", "MyAppSettings.xml");
       _storage.WriteXml(settingFile);
    }

    public string GetValue(string settingName)
    {
        // Code to search the base table
    }
    public void SetValue(string settingName, string settingValue)
    {
        // Code to update/insert the base table
    }
}
于 2012-08-27T20:44:25.667 に答える
1

これにはアプリケーション設定を使用する必要があります。

Visual Studioは優れたサポートを提供し、宣言したプロパティ (設定) を使用してアクセサー クラスを自動生成します。

于 2012-08-27T20:25:57.640 に答える