С# обновление информации в exe-файле

Я создаю приложение, которое должно состоять из одного файла .exe, который, в свою очередь, будет распространяться другими. В этом .exe файле есть два жестко заданных поля: имя пользователя и пароль. Люди, которые собираются распространять это, хотят иметь возможность обновлять эти поля и изменять информацию.

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

Мне написать новое приложение, которое каким-то образом его декомпилирует, обновляет поля и перекомпилирует? Или есть «обычный» способ сделать это, о котором я не знаю? Или это единственный способ зайти в исходный код, изменить поля и скомпилировать новый .exe и заменить старый?

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


person Gvs    schedule 14.05.2013    source источник
comment
Разве это не ложное чувство безопасности, поскольку программу можно просто декомпилировать? Верно ли утверждение, что вы хотите, чтобы дистрибьюторы могли устанавливать username и password, но вы хотите, чтобы пользователи не могли их просматривать или изменять?   -  person Mike Perrenoud    schedule 14.05.2013
comment
Вместо этого создайте хеш-функцию, чтобы они могли выбрать любое имя пользователя, но должны знать функцию для создания правильного пароля.   -  person Sinatr    schedule 14.05.2013
comment
Прочитайте то, что вы только что написали в первом абзаце, 2 hard coded fields that the users can change хорошо звучит как оксиморифицированное утверждение.. почему бы не создать процесс, который при первом запуске приложения хеширует конкретное поле в отношении пароля. ты никогда не должен HARDCODE PASSWORDS...   -  person MethodMan    schedule 14.05.2013
comment
извините, должен был объяснить, имя пользователя и пароль на самом деле являются адресом электронной почты и паролем для отправки почты через smtp-клиент: p, плохая формулировка с моей стороны. Причина, по которой он не является общедоступным, заключается в том, что конечным пользователям не нужно видеть почтовый адрес и пароль, используемые для отправки почты, они только заполняют свой собственный почтовый адрес.   -  person Gvs    schedule 14.05.2013


Ответы (1)


Вместо жесткого кодирования информации в исполняемый файл может иметь смысл по-прежнему иметь файл app.config, но зашифровать его, а затем предоставить утилиту, которая запишет зашифрованный файл app.config с указанной информацией.

person neminem    schedule 14.05.2013
comment
это похоже на лучший вариант на данный момент, да. - person Gvs; 14.05.2013
comment
Я читал об этом, и я вижу одну проблему: поскольку у меня нет установочного файла, ключи не будут зашифрованы, пока вы не запустите приложение один раз? Думаю, это не проблема, так как я могу запустить его, а затем распространить, я думаю, но есть ли другой способ, который я не вижу? Я говорю о шифровании app.Configs appSetting, которое выполняется с помощью кода в приложении (я думаю, во время загрузки формы) или через консольное приложение? - person Gvs; 15.05.2013
comment
Закончилось тем, что я только что сделал консольное приложение, которое шифрует, расшифровывает и обновляет информацию в файле app.config, который будут использовать дистрибьюторы. Спасибо - person Gvs; 16.05.2013
comment
Круто, рад, что сработало! (На самом деле я еще не использовал зашифрованный файл app.config — я просто знал об этом, потому что я изучил его для проекта, который нам, вероятно, потребуется реализовать в какой-то момент, просто еще нет.) - person neminem; 16.05.2013
comment
Было относительно безболезненно реализовать :) - person Gvs; 20.05.2013