2013-05-31 4 views
0

Для некоторых программных продуктов для САПР я делаю программу очистки (WPF), которая может очищать определенные типы файлов темпа и журнала, которые мне больше не нужны, но что мое программное обеспечение для кэша не очищает само по себе.Запустите команду после входа пользователя в Windows

Как я сделал это в приложении WPF, я просто сделал кнопку, чтобы очистить любые типы файлов, которые мне не нужны.

Теперь я искал функцию, чтобы выполнить ее после того, как я вошел в систему. Поэтому я не пытаюсь выполнить полную программу после запуска, только одну из команд внутри программы. Я знаю, что в Windows есть папка с именем startup, но я не хочу ее использовать. Можно ли это сделать по-другому? Так что я могу просто установить флажок в своем приложении, где я могу установить «да» или «нет», чтобы он запускался при запуске?

Я озирался, но ничего не нашел об этом.

+0

Другой вариант заключается в добавлении его в реестр, который вы можете сделать из вашего приложения (не забудьте проверить соответствующие разрешения !!) Проверь это; http://stackoverflow.com/questions/674628/how-do-i-set-a-program-to-launch-at-startup –

+0

плохо проверьте, что ссылка, thanx. Также добавлена ​​небольшая строка на вопрос, чтобы лучше объяснить мой вопрос: «Поэтому я не пытаюсь выполнить полную программу после запуска, а только одну из команд в программе». – Dante1986

ответ

1

В соответствии с вашими изменениями;

Ознакомьтесь с параметрами запуска в этом сообщении; How do I set a program to launch at startup

Затем с вами добавлением «Так я не пытаюсь выполнить полную программу после запуска, только одну из команд в рамках программы»; использовать начальные параметры. Поставьте приложение параметром командной строки и проверьте его в Program.cs вашего приложения.

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

Чтобы использовать command-line arguments, просто добавьте параметр string [] к вашему методу Main;

public static void Main(string[] args) 
    { 
     Console.WriteLine("Number of command line parameters = {0}", 
      args.Length); 
     foreach(string s in args) 
     { 
      Console.WriteLine(s); 
     } 
    } 

Ваш полный (псевдо-) код будет выглядеть следующим образом:

public static void Main(string[] args) 
    { 
     if (args[0].Equals("/JUSTCLEANPLEASE")) 
      JustClean(); 
     else 
      Application.Run(new Form1()); 
    } 
+0

thanx много, я думаю, это действительно поможет мне сделать то, что я хочу. – Dante1986

1

Почему вы не хотите использовать каталог авто запуска?

Есть несколько альтернатив этому. Пожалуйста, обратитесь к этой статье базы знаний: http://support.microsoft.com/kb/137367/en-us Когда вы создаете запись в одном из этих узлов, указанных в ссылке, вы можете контролировать, хотите ли вы запускать что-либо при каждом запуске или только один раз (см. RunOnce).

Простым подходом будет создание командного файла в каталоге temp или где-нибудь, где он не будет удален, и добавьте его в один из узлов автоматического запуска, который вам подходит. Образцы о том, как получить доступ к реестру с помощью C#, очень много. Edit: Или увидеть ссылку, представленную Gerald Versluis Однако имейте в виду, что существует разница в опыте и RunOnce этих различных узлов

0

Не знаете, как ваша программа устанавливается, но я бы разделить пользовательский интерфейс (GUI) из логики.

Вы можете создать службу для логики, и пользовательский интерфейс WPF будет отдельно обращаться к этой службе.

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

Посмотрите в MSConfig.exe для лучшего контроля над запуском и услуг и т.д.

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