所有用户的用户设置

时间:2014-02-25 20:04:51

标签: c#

我知道必须有一种方法可以让读/写的应用程序/用户设置对所有用户都相同。我为工厂安装的自动激光打标机编写代码。我希望代码像

一样简单
        private void _btnApply_Click(object sender, EventArgs e)
    {
        Settings.Default.IOCOM = comboIOCOM.Text;
        Settings.Default.TLoc = tbTLoc.Text;
        Settings.Default.Save();
    }

但我不希望.config文件保存在每个用户的文件夹中。我希望所有用户都使用相同的设置。

回答时要记住的事项是,将要登录的用户将拥有c:\和所有文件夹的管理员权限

另外,我正在使用VS 2010。

2 个答案:

答案 0 :(得分:2)

不会自动喜欢user.configapp.config。但是这样做的方法是使用Environment.GetFolderPath(来查找CommonApplicationData文件夹。

//Finding the file
var commonPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
var programPath = Path.Combine(commonPath, "Your Programs Name");
var settingFile = Path.Combine(programPath, "settings.xml");



//Saving settings
Directory.CreateDirectory(programPath);
var serializer = new XmlSerializer(typeof(YourCustomSettingsType));
using(var fs = File.Open(settingFile, FileMode.Create))
{
    serializer.Serialize(fs, yourCustomSettings);
}


//loading settings
try
{
    var serializer = new XmlSerializer(typeof(YourCustomSettingsType));
    using(var fs = File.Open(settingFile, FileMode.Open))
    {
        yourCustomSettings = (YourCustomSettingsType)serializer.Deserialize(fs);
    }
}
catch
{
    //If it fails to load just use the default settings (set in the constructor)
    yourCustomSettings = new YourCustomSettingsType();

    //Save the settings out so it won't fail next time.
    SaveSettings(yourCustomSettings);
}

您将使用自定义设置类,就像使用普通设置类一样。

答案 1 :(得分:0)

我提出的解决方案是使用EF和SQLite存储我的应用程序的所有设置。这样我就可以从DB加载到Model并将DB文件存储到我想要的任何位置。此外,我获得了SQL的结构和组织,可以跳过XML文件的所有序列化。此外,DB文件不是纯文本,我可以使用记事本限制未经授权的用户更改设置。