Как передать данные в exe файл на C# при загрузке?
Здравствуйте.
Уже видел подобный вопрос на этом форуме, но так и не понял как решить такую проблему.
Вся суть в том, что пользователь должен авторизироваться на сайте и скачать файл main.exe, который он сможет открыть и увидеть "ваш логин: (логин пользователя)". Как я понял, можно обойтись без компиляции .cs файла.
Как можно передать логин пользователя PHP скриптом в exe файл?
Спасибо.
Дополнительно:
Это лучше делать с ключом/лицензией в которую прописан логин.
Как вариант - можно посмотреть в сторону ресурсов или просто тащить вместе с экзешником какой-нибудь конфиг.
скачать файл main.exe, который он сможет открыть
точно сможет открыть? А если у него Linux?
дайте пользователю скачать два файла main.exe и main.exe.config
который просто текстовый
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <appSettings> <add key="key" value="персоналный ключ"/> |
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <appSettings> <add key="key" value="персоналный ключ"/>
если помогло - я положу в ответы вы отметите решением
Ответы:
1. Передавать имя пользователя в аргументах к программе, но тогда нужно уметь правильно запускать. Т.е. нужен установщик, который ярлык правильно настроит
2. Отправлять вместе с программой файл конфигурации, из которого нужно читать имя пользователя.
3. Скомпилировать с уже встроенным именем.
Для последнего пункта можно сделать оптимизацию - весь проект (с логикой) хранить уже скопилированными, а при поступлении запроса компилировать exe. В него положить имя пользователя и просто скопировать готовые dll, а сам он просто будет прослойкой для самой программы.
Также появилась идея о каком-нибудь шаблонном движке (по типу razor), который в потоковой обработке будет отправлять байты программы и в нужном месте подставит строку имени, но не знаю существует такое решение или нет (скорее нет)
Проще всего просто дописать строку в конец самого exe файла, а в последнем байте - её длину. И при запуске приложения прочитать последний байт exe и далее вычислив начало и конец строки прочитать конец файла как строку. Чуть более сложный вариант в случае если надо пересобирать дистрибутив или добавить в него параметры какие-то: NSIS отлично работает под линуксом - так что можно ему передавать любые свои аргументы и делать сборку дистрибутива на лету.
-
а в последнем байте - её длину.
Там можно обойтись без этого. Приложение может прочитать собственный PE заголовок, чтобы получить размер своего же образа. Соответственно, все, что будет за пределами образа - это оверлей с какими-то данными.
- а контрольная сумма не але?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для передачи данных в exe файл на C# при его загрузке, можно воспользоваться различными методами, в зависимости от того, какие данные нужно передать и как они должны обрабатываться в приложении.
Одним из способов передачи данных может быть использование аргументов командной строки. Для этого необходимо в коде exe файла обработать параметры, переданные при запуске программы. Например, чтобы передать строку в exe файл, можно выполнить следующий код:
static void Main(string[] args) { if(args.Length > 0) { string data = args[0]; // Далее обрабатываем переданные данные } }
Другим способом передачи данных может быть использование файлов. Например, вы можете сохранить данные в файле перед запуском exe файла, а затем в самом приложении прочитать этот файл и обработать данные. Пример кода для чтения данных из файла в C#:
string data = File.ReadAllText("data.txt"); // Далее обрабатываем данные из файла
Также можно воспользоваться сетевым взаимодействием для передачи данных, используя сокеты или HTTP запросы. Например, вы можете отправить данные на сервер, который запустит exe файл и передаст ему данные в виде параметров командной строки.
Надеюсь, что один из этих способов поможет вам передать данные в exe файл на C# при его загрузке. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.