2016-12-06 9 views
0

私はしばらく前に書いたアプリケーションに本当に奇妙な問題があります。それは問題なく働いたが、しばらくの間それを残した後、単に機能を停止した。ここにコードを添付します:Windowsアプリケーションログに書き込めません(C#)

try 
{ 
    using (Process proc = Process.Start(starter)) 
    { 
     windowHider(); 
     proc.WaitForExit(); 

     DateTime endStamp = DateTime.Now; 
     endStamp = truncate(endStamp); 
     TimeSpan diff = endStamp.Subtract(startStamp); 

     string programSource = "applicationName"; 
     string logLocation = "Application"; 
     string occurance = "Var='" + varName + "' Var2='"+ var2Name + "' Var3='" + var3Name + "' Var4='" + var4Name + "' Var5='" + var5Name + "' Var6='" + var6Name + "'"; 

     try 
     { 
      if (!EventLog.SourceExists(programSource)) 
      { 
       EventLog.CreateEventSource(programSource, logLocation); 
      } 
      else 
      { 
       EventLog.WriteEntry(programSource, occurance); 
      } 
     } 
     catch (Exception err) 
     { 
      string message = "There was an error with usage logging. Please contact IT."; 
      MessageBox.Show(message); 
      errorLogger(message, err.ToString(), ((Control)sender).Name); 
      this.Close(); 
     } 

     this.Close(); 
    } 
} 

終了したプロセスが終了すると、プログラムはアプリケーションログに書き込みます。この突然の問題は何ができるかによう

EventLog.WriteEntry(programSource, occurance); 

任意のアイデア:

Exception: System.ComponentModel.Win32Exception (0x80004005): The specified path is invalid

それが原因としてこの行を引用している:いくつかの理由で、しかし、私は次のエラーを取得していますか?

+0

'programSource'はイベントログサービスに登録されていますか? – AlG

+0

レジストリキーHKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥services¥eventlog¥Application¥applicationNameに対して、問題のコードを実行しているユーザーの権限を与える必要があります。 –

+0

@AlG EventLog.CreateEventSourceを使用してソースを生成するには、これを行う必要があります。プログラムソースをプログラムで登録する方法はありますか? – Rich

答えて

0

私はそれを理解しました!レジストリに壊れたものがあり、別の破損したコンポーネントがどこかに潜んでいるに違いありません。私はソース名を変更しましたが、問題なく動作しました。

元のソース名は他のマシンでも動作しますので、レジストリで間違いなくちょっとしたことだったと思います。

関連する問題