2011-10-10 60 views
1

我有一個小的Winforms應用程序,它創建一個新的事件日誌源。Windows Server 2008不會讓我創建一個日誌源,告訴我它已經存在(它不)

我運行它作爲管理員爲提升特權。

代碼檢查以確保指定的事件日誌不存在,然後創建源代碼。這在我的Windows 7機器上運行良好,但是當我在Windows Server 2008 R2 SP1上運行應用程序時,它告訴我源已經存在。我知道它不是因爲a)這是Windows Server 2008 R2的全新安裝,並且b)我添加了代碼以返回所有日誌源的列表,並且我的新列表不在列表中。

我知道「前8個字符」是重要的字符,我確信我的源名稱是完全獨特的。

這裏是超級容易代碼(當然我已經嘗試/解決此捕撈):

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

誰能告訴我,爲什麼Windows Server 2008是在騙我?

回答

0

本地(或域名)管理員是而不是 Windows框中功能最強大的帳戶。

還有其他帳戶具有更高(但也更有限)的訪問權限。

SourceExists()如果它退出但是您沒有權限知道它,它將返回false,並且管理員完全有可能被拒絕訪問某些內容。

另外,在奇怪的地方還有一些保留的名字,可以讓你起來。創建名爲CON COM或LPT的文件夾用於在服務器2003上引發奇怪的問題。

所以也有一大堆爲什麼CreateEventSource()可能會失敗的原因 - 也經常挖掘內部異常那些提供關鍵細節。

哪個事件日誌源名稱失敗了?
你會發布異常堆棧嗎?

+0

奇怪。我只是再次嘗試一個源名稱保證是唯一的(「Oct12」),它的工作!我不知道昨晚發生了什麼事。似乎似乎並沒有存在我認爲的來源。也許它匹配相應的Windows服務的註冊名稱。以下是例外情況:本地計算機上已存在「源PPTConversionService」。在System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) at System.Diagnostics.EventLog.CreateEventSource(String source,String logName) at EventLogJuicer.Form1.CreateSource()' – Aaronster

+0

剛剛創建的事件日誌沒有出現在應用程序和服務日誌事件日誌列表...重新啓動服務器管理器...它就是這樣!現在正在工作。去搞清楚。 – Aaronster

相關問題