如何在安装中的AppData中放置exe.config文件?

时间:2019-02-15 14:56:06

标签: c# visual-studio winforms entity-framework connection-string

我使用Visual Stuido 2013用C#开发了Windows窗体程序。安装后,我希望exe.config文件位于AppData路径中。因为有时程序必须读写该文件,但我不希望程序必须以管理员权限执行。

当我使用安装程序项目创建安装程序时,我将“程序的主要输出”添加到应用程序文件夹中,但是我无法指定exe.config可以放在AppData路径中。

是否有某种方法可以避免管理员权限?

谢谢。

2 个答案:

答案 0 :(得分:1)

使用System.Configuration; 使用System.IO;

    Configuration config = null;

    public Program()
    {       
        string app_data = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

        StreamWriter sw = new StreamWriter(app_data + "\\MyApp.exe.config", false);
        sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
        sw.WriteLine("<configuration>");
        sw.WriteLine("</configuration>");
        sw.Close();

        ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
        fileMap.ExeConfigFilename = app_data + "\\MyApp.exe.config";
        config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

        config.AppSettings.Settings.Add("Key", "Value");
        config.Save();

        Console.ReadLine();
    }

答案 1 :(得分:0)

为什么不只是在AppData中安装应用程序?

        string[] files = Directory.GetFiles(".\\");

        string app_data = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Apps\\MyApp";
        Directory.CreateDirectory(app_data);

        foreach (var file in files)
        {
            File.Copy(file, app_data + file.Substring(file.LastIndexOf("\\")) );
        }