Как разместить файл exe.config в AppData при установке? - PullRequest
0 голосов
/ 15 февраля 2019

Я разработал программу Windows Form на C # с Visual Stuido 2013. Когда она будет установлена, я бы хотел, чтобы файл exe.config находился в пути AppData.Потому что иногда программе придется читать и записывать этот файл, и я не хочу, чтобы программа выполнялась с правами администратора.

Когда я создаю установщик с проектом установки, я добавляю в папку приложения«Основной вывод из программы», но я не могу указать, что exe.config может поместить в путь AppData.

Есть ли способ сделать это, чтобы избежать прав администратора?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

с использованием 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();
    }
0 голосов
/ 17 февраля 2019

Почему бы просто не установить приложение в 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("\\")) );
        }  
...