2016-02-22 7 views
8

(私は、WCFサービスを行っている、それが法文字列SaveVideoInformationが含まれています)この方法のUIは、(Process.Start後に表示されていない)

目的は、それがない場合は、プロセスを実行することですランニング。 以下はそのメソッドのコードです。

public string SaveVideoInformation(string ID, string videoName) 
    { 
     string Result = null; 
     try 
     { 
      Result = Insert(ID, videoName); 
      Process[] pname = Process.GetProcessesByName("AutoRunVideoWaterMarkingTook"); 
      if (pname.Length == 0) 
      { 
       Result += " | Trying to run Process"; 
       try 
       { 
        Process process = Process.Start(@"~\Debug\AutoRunVideoWaterMarkingTook.exe"); 
        Result += " | Process Ran Successfully"; 
       } 
       catch (Exception ex) 
       { 
        Result += " | Exception While Running the process"; 
        throw new Exception("Unable to start Process); 
       } 
      } 
      else 
      { 
       Result += "|Process Already Running"; 
      } 
     } 
     catch (Exception ex) 
     { 
      Result = "Not Done," + ex.Message; 
     } 
     return Result; 
    } 

私が直面している問題は、Windowsフォームツールアプリケーションからこのメソッドを呼び出すと、正常に実行され、UIが表示されます。

Windowsサービスからこのメソッドを呼び出すと、プロセスは開始されますが、UIは表示されません。

答えて

1

これは、Windowsサービスがユーザーインタラクティブモードではないためです。

this blogに記載されているように、これをサービスパネルから有効にする必要があります。サービスプロパティLog OnページのAllow service to interact with desktopを確認してください。

Microsofts recommendations on user interactive servicesも読んでください。

+0

私はWindows 8を使用しています。私は2つの変更を行いました。デスクトップとインタラクティブにし、レジ​​ストリを変更して再起動します。結局のところ、それはまだ同じデスクトップ上では実行されていませんが、ダイアログボックスでプロンプトが表示されます。このメッセージを表示する "コンピュータで実行中のプログラムがメッセージを表示しようとしています"それは私のツールが実行されている別のデスクトップに私を連れて行く – Charlie

+0

それはユーザーの問題かもしれません。どのユーザーがサービスを実行していますか? –

関連する問題