1

Windows Server 2003で適切に機能する次のコードがあります。これは、EventViewerのアプリケーションイベントログに書き込みます。同じコードはWindows2008では機能しません。アプリケーションがクラッシュします。WindowsServer2008のイベントログへの書き込み方法についてサポートを依頼してください。

if (!EventLog.SourceExists("MyServiceLog"))
{
    EventLog.CreateEventSource("MyServiceLog", "Application");
}
//Create an EventLog instance and assign its source.
EventLog eventLog = new EventLog();
eventLog.Source = "MyServiceLog";
//Write an informational entry to the event log.
eventLog.WriteEntry(Header + ": " + FailureReason);
4

3 に答える 3

4

新しいイベントソースを作成するには、ローカルのAdministratorsグループのメンバーである必要があります。ソースはおそらくServer2003に存在するか、そのオペレーティングシステムで必要なアクセス許可を既に持っています。Server 2008では、管理者であっても、デフォルトでは昇格された特権なしで実行されます。その場合、アプリケーションを右クリックして[管理者として実行]を選択する必要があります。

于 2010-10-02T12:22:19.513 に答える
2

これは、Windows 2008の新しいアクセス許可セットと関係があり、アカウントには、新しいイベントログソースを作成するための特権アクセス権がありません。

アプリケーションのインストーラーを作成するときは、それらのイベントログソースを作成するのが最善です。通常、インストーラーは特権権限で実行する必要があるためです。

于 2010-10-03T04:24:11.043 に答える
0

re'アプリケーションがクラッシュします'-これは管理対象環境では発生しないはずです。この場合、権限に関連している可能性がありますが、エラー(つまり例外)を処理するロジックを追加しない限り、あなたは永遠に暗闇の中でアプリを再起動します。

これをに変更します

try 
{ 
    /* put your event log code here */ 
} 
catch (Exception e) 
{ 
    /* new code to gracefully handle errors */ 
}

そして、何が間違っているのか、どこで起こったのかを正確に把握するために取得しているExceptionクラスとフィールド(e.Message、など)を確認します。e.StrackTrace

于 2010-10-02T14:55:57.770 に答える