1

新しいイベントログソースを作成する小さなwinformsアプリがあります。

昇格された特権の管理者として実行します。

コードは、指定されたイベントログが存在しないことを確認してから、ソースを作成します。これは私のWindows7マシンでは正常に機能しましたが、Windows Server 2008 R2 SP1でアプリを実行すると、ソースが既に存在することがわかります。a)これはWindows Server 2008 R2の新規インストールであり、b)すべてのログソースのリストを返すコードを追加しましたが、新しいものがリストに含まれていなかったためです。

「最初の8文字」が重要な文字であることを知っており、ソース名が完全に一意であることを確認しました。

これが非常に簡単なコードです(もちろん、私はこれを回避するための試み/キャッチを持っています):

if (!EventLog.SourceExists(sourceName))
{
    EventLog.CreateEventSource(sourceName, logName);
}

Windows Server 2008が私に嘘をついている理由を誰かに教えてもらえますか?

4

1 に答える 1

0

ローカル (またはドメイン) 管理者は、Windows ボックスで最も強力なアカウントではありません。

より高い (より制限された) アクセス権を持つ他のアカウントがあります。

SourceExists()終了した場合は false を返しますが、それについて知るためのアクセス権がありません。管理者が何かへのアクセスを拒否される可能性は十分にあります。

また、つまずく可能性のある奇妙な場所にあるものの予約名があります。CON COM または LPT という名前のフォルダーを作成すると、サーバー 2003 で奇妙な問題が発生していました。

そのため、CreateEventSource() が失敗する理由もたくさんあります。内部例外も掘り下げてください。多くの場合、それらは重要な詳細を提供します。

どのイベント ログ ソース名が失敗していましたか?
例外スタックを投稿しますか?

于 2011-10-10T06:01:44.597 に答える