2010-09-20 4 views
1

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

Я не хочу разбирать файл или иметь что-либо, кроме ОДНОГО файла, поэтому, пожалуйста, не предлагайте делать это, если это возможно.

ответ

4

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

Это будет отдельный файл exe, но если вы не указали, что «ОДИН файл» должен включать исполняемый файл и переписывать его «на лету», он должен легко соответствовать вашему описанию.

Например, давайте создадим приложение консоли, что только помнит, сколько раз он был запущен:

  1. Создайте новый проект консольного приложения
  2. Перейти на страницу свойств, и нажмите на вкладку Настройки.
  3. Нажмите на ссылку для создания файла настроек
  4. Введите таблицу, чтобы создать параметр «LaunchCount» типа int. Сделайте это либо областью пользователя, либо областью приложения, в зависимости от того, хотите ли вы, чтобы она сохранялась на пользователя или в рамках всей системы.
  5. Нажмите Ctrl-S, чтобы сохранить.
  6. В главном методе в Program.cs, написать этот код:

    Settings settings = Settings.Default; 
    settings.LaunchCount++; 
    Console.WriteLine("Launch count: {0}", settings.LaunchCount); 
    settings.Save(); 
    
  7. Добавляет соответствующая using директивы для Settings (поместить курсор в меню Настройки и нажмите Ctrl-.)

  8. Запускает приложение несколько раз, и наблюдайте увеличение числа.
+0

no i означает только исполняемый файл. Я развертываю это приложение непосредственно на настольных компьютерах пользователей и уменьшаю беспорядок, и я просто хотел иметь одну единственную вещь, чтобы сделать ее простой и простой. я просто хотел бы иметь возможность изменять URL-адрес по умолчанию, который был загружен, и не должен делать изменения для реального приложения, когда мне нужно его изменить. это своего рода сборка один раз и никогда не нужно исправлять ошибки, потому что это буквально просто веб-браузер и 3 кнопки. – cferbs

+0

@cferbs: На самом деле непонятно, кто здесь будет меняться. Вы бы изменили URL-адрес и пересоздали exe, а затем перераспределили его? Или каждый пользователь запускает эту «панель администратора»? Обратите внимание, что при описанном выше подходе пользователям никогда не придется обращаться к самому файлу настроек. Это просто и легко, как для пользователя, так и для разработчика. Где вы видите, что вещи сложны или трудны? Переписывание exe на лету - это то, что * я бы счел сложным ... –

+1

«Сборка один раз и никогда не исправить ошибки». Хах. Хах. –

0

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

Имейте в виду, что использование реестра крайне не рекомендуется из-за соображений безопасности. Кроме того, большинство компаний не разрешают доступ к реестрам в любом случае, что означает, что любой, у кого нет этого доступа, не может использовать функцию настроек.

0

Существует несколько способов сделать это. Для этого вы можете использовать аргумент командной строки. Запустите приложение из оболочки и введите аргумент командной строки и измените способ его запуска.

Подход UNIX-y состоит в том, чтобы посмотреть на имя exe и изменить поведение на основе этого. Если я правильно помню, rsh и rlogin - это один и тот же исполняемый файл - они просто смотрят на argv [0], чтобы решить, как работать. В Windows это прямолинейно - посмотрите на System.Environment.GetCommandLineArgs - если в 0-м элементе есть непустая строка, это будет ваше исполняемое имя.

Для сохраняющихся настроек, see Jon Skeet's answer.

0

Я должен сказать, что это вообще плохая идея, но я сделал это до того, как давно в VB6. Я создал ресурс в exe, а затем (каким-то образом) напрямую манипулировал им.

Проблема в том, что это обычно невозможно в рамках платформы .NET из-за того, что она является резидентной. Эти ребята попробовали его в .net, и они закончили тем, что создали программу в IL, чтобы сделать тяжелую работу ... Modify Emdeded String in C# compiled exe

Пойдите с файлом настроек, как предложил Jon!

Смежные вопросы