1

Windowsにログオンする前にWindowsフォームアプリケーションを起動するにはどうすればよいですか?Windowsにログオンする前にWindowsフォームアプリケーションを起動することはできますか?そうでない場合は、ログオンする前にWindowsサービスを開始し、ログオンする前に既に開始されているサービスからWindowsフォームアプリケーションを呼び出す機会がありますか?

4

2 に答える 2

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 サービス ホスト」(または同様のもの) を調べて、それがどのように行われているかを確認してください。同じ前提で、Process代わりに a を使用しているだけです。

于 2013-01-10T17:55:07.927 に答える
2

質問へのコメントによると、ユーザーがログオンする前に起動するサービスではなく、WinForms で構築された標準のデスクトップ アプリを実行したいということです。

これは不可能です。必要なのはサービスです。

于 2013-01-10T18:04:08.257 に答える