Запустите приложение 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
вместо.