Как я могу скрыть файлы конфигурации для С# .exe?

У меня есть приложение, которому нужен файл json в том же каталоге, но файл виден напрямую и доступен, когда кто-либо его использует, и его редактирование может сломать мое приложение. Как я могу скрыть этот файл? Я ищу метод архива или упаковки, который все же позволил бы мне выполнить exe.

Редактировать: идеальное решение для одного файла, может быть, архив, который выполняет мой exe и сохраняет другой файл?


person Kamil Suhak    schedule 20.05.2020    source источник
comment
Когда вы отправляете этот конфигурационный файл, вы мало что можете сделать, на самом деле конфигурационный файл предназначен для - угадайте, для чего? - настройка вашего приложения. Однако вы можете каким-то образом закодировать файл...   -  person HimBromBeere    schedule 20.05.2020
comment
@HimBromBeere Вы правы, однако у меня есть приложение, созданное только для создания этого файла конфигурации, и я хотел бы отправить один файл вместо сжатого архива.   -  person Kamil Suhak    schedule 20.05.2020


Ответы (2)


Вы можете попробовать скрыть файл, используя Файл.SetAttributes:

File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
person JeremyRock    schedule 20.05.2020
comment
Спасибо, это что-то плохое, но я ищу более однофайловый способ сделать это. Мне все равно придется сжимать файлы, чтобы отправить их. Однако это решает мою первую проблему. - person Kamil Suhak; 20.05.2020

Если ваше приложение очень маленькое и не использует определенные платформы, вы можете полностью удалить файл app.config.

См. ответ на этот вопрос

Если у вас есть несколько переменных в вашей конфигурации, вам теперь нужно создать статический класс, чтобы определить их во время компиляции.

class MySettings{
    public const string Setting1="Value of setting 1";
    public const string Setting2="Value of setting 2";
}

И в вашем коде:

var setting = MySettings.Setting1;//then use your setting in your code

Идея наличия файла конфигурации заключается в том, что вы можете вносить изменения после развертывания приложения. Для сложных приложений у вас может быть отдельный файл конфигурации для каждой среды развертывания (например, среды разработки, среды тестирования, рабочей среды и т. д.).

person peterpie    schedule 20.05.2020
comment
Я имел в виду свой собственный конфигурационный файл ^^. Я создал его специально для того, что вы сказали, чтобы я мог изменять значения без перестройки всего приложения. Я думаю, что плохо использую ответ @JeremyRock, но спасибо! - person Kamil Suhak; 20.05.2020