在登录到Windows之前启动Windows窗体应用程序

时间:2013-01-10 17:38:26

标签: windows winforms winlogon

如何在登录Windows之前启动Windows窗体应用程序?是否可以在登录到Windows之前启动Windows窗体应用程序?如果不是,我是否有机会在登录前启动Windows服务并从登录前已启动的服务调用Windows窗体应用程序?

2 个答案:

答案 0 :(得分:2)

非常基本,但应该给你一个要点。您还需要为其创建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
    }
  }
}

这基本上就像从Windows服务托管WCF服务,因此如果您需要更多详细信息,请查找“WCF Windows服务主机”(或类似)并查看how that's done。同样的前提是,您只需使用Process

答案 1 :(得分:2)

根据对该问题的评论,您希望运行一个标准桌面应用程序,该应用程序使用WinForms构建,而不是服务,在用户登录之前启动。

这是不可能的。你需要的是一项服务。