Запустите приложение Windows Forms, прежде чем войти в Windows

Как я могу запустить приложение Windows Forms перед входом в Windows? Возможно ли запустить приложение windows form перед входом в windows? Если это не так, могу ли я запустить службу Windows перед входом в систему и вызвать приложение Windows Form из службы, которая уже запущена до входа в систему?

2 ответа

Решение

Согласно комментариям к вопросу, вы хотите запустить стандартное настольное приложение, созданное с помощью WinForms, а не службу, которая запускается до входа пользователя в систему.

Это невозможно. Вам нужен сервис.

Очень простой, но должен дать вам суть. Вам также необходимо создать ServiceProcessInstaller за это (вместе с звонком installutil).

public class WinFormHostService : System.ServiceProcess.ServiceBase
{
  [STAThread]
  public static void Main()
  {
    System.ServiceProcess.ServiceBase.Run(new WinFormHostService());
  }

  protected Process winFormsProcess;

  public WinFormHostService()
  {
    this.ServiceName = "WinForm Host Service";
    this.AutoLog = true;
  }

  protected override void OnStart(String[] args)
  {
    this.winFormsProcess = new Process();
    try
    {
      this.winFormsProcess.UseShellExecute = false;
      this.winFormsProcess.FileName = @"C:\Program Files\MyApp\MyApp.exe";
      this.winFormsProcess.CreateNoWindow = true;
      this.winFormsProcess.Start();
    }
    catch (Exception ex)
    {
      // unable to start process
    }
  }
}

По сути, это похоже на размещение службы WCF из службы Windows, поэтому, если вам нужно больше подробностей, посмотрите "Хост службы службы WCF" (или аналогичный) и посмотрите, как это делается. Та же предпосылка, вы просто используете Process вместо.

Другие вопросы по тегам