2017-02-02 14 views
0

サンプルWindowsアプリケーションを起動するためのWindowsサービスを作成しました。サービスがロードされると、アプリケーションが起動するはずですが、サービスが起動しても私のアプリケーションを起動することはできません。以下はWindowsサービスで.exeアプリケーションを起動できません

コードです:

protected override void OnStart(string[] args) 
    { 
     this.WriteToFile("Simple Service started {0}"); 
     Process.Start("‪D:\\demo.exe"); 
     this.WriteToFile("Simple Service ended {0}"); 

    } 
+1

this wonderfuleのarticalをお読みくださいあなたはそれがそこに存在するか否かのパスを検証することがありますか? –

+0

Windowsサービスのセキュリティコンテキストを教えてください。 – Adrian

+0

サービスがアプリケーションを起動しても、ログインしているユーザーのセッションではなく、セッション0で実行されます。 *インタラクティブ*アプリケーションを起動しようとしている場合、これは動作しません。 –

答えて

0
ProcessStartInfo pinfo = new ProcessStartInfo("‪D:\\demo.exe"); 
    pinfo.Verb = "runas"; 
    Process.Start(pinfo); 
+0

答えにいくつかの説明を加えてください – wmk

+0

上記のコードで試してみましたが、うまくいきませんでした:(ログはうまくいきますが、.exeファイルはうまく動作しません:( – Mahi

+0

ああ、私も試しましたサービスを実行しているexeコードを1回実行しています。ソリューションを見つけるのに2日を費やした後、バックグラウンド実行サービスはUIプロセスを開始できませんでしたが、解決策を見つけたら、 –

1

それはあなたのサービスがSystem.ServiceProcess.ServiceAccount.LocalSystemアカウントで

を実行している可能性があります後藤あなたのServiceInstaller.csが

後藤のInitializeComponent()メソッド

を提出

あなたのコードに従って以下の行を変更してください

this.serviceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.User

注:これは、Windowsサービスをインストールしながら、ID /パスワードログイン聞いてきます。

MSDN

関連する問題