2012-03-05 22 views
101

我收到以下例外情況。我在Registry edit中的Eventlogs上完全控制了Asp.net帳戶。未找到源代碼,但部分或全部事件日誌無法搜索

[SecurityException:未找到源,但部分或全部事件 日誌無法搜索。無法訪問的日誌:安全]

System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) +664 
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109 
System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41 

我想這是由於在服務器上進行一些配置問題?

+0

可能的複製http://stackoverflow.com/questions/1274018/system-security-securityexception-當寫入事件日誌) – 2017-02-24 02:53:16

回答

91

EventLog.SourceExists枚舉通過HKLM\SYSTEM\CurrentControlSet\services\eventlog的子項查看它是否包含具有指定名稱的子項。如果運行代碼的用戶帳戶沒有讀取訪問權限(在您的情況下爲Security子鍵),則在查找目標源之前,您將看到一個異常,如您所描述的異常。

處理這些問題的常用方法是在安裝時(在管理員帳戶下)register event log sources,然後假定它們在運行時存在,從而允許將任何生成的異常視爲意外,如果目標事件日誌源實際上沒有在運行時存在。

+23

在Windows 8上,即使禁用了UAC並且用戶是Administrator,仍然需要以管理員身份運行VS.這就是我的案例的解決方案 – itsho 2013-06-07 13:39:02

+1

對我來說,僅僅是第一次以管理員身份運行應用程序就足夠了。之後,事件源被創建並且應用程序正常工作。 – thomaskonrad 2016-10-15 09:12:06

+1

這是一個例子,說明Windows如何阻止使用操作系統中的嵌入式工具 – 2017-07-07 10:29:33

6

啓動開發人員命令行「以管理員身份」。此帳戶具有完全訪問安全日誌

52

有同樣的例外。就我而言,我必須使用管理員權限運行命令提示符。

從開始菜單中,右鍵單擊命令提示符,選擇「以管理員身份運行」。

+1

我的情況是以管理員身份運行Visual Studio 2015。 (做一個Web API項目。) – 2017-05-09 18:59:14

8

對我來說,這個錯誤是由於沒有在管理員權限下運行的命令提示符。您需要右鍵單擊命令提示符並說「以管理員身份運行」。

您需要管理員角色才能安裝或卸載服務。

+0

我摸索了大概2個小時,感謝隊友! – 2016-11-09 09:51:52

4

沒有爲我工作。

我創建了一個新的密鑰和字符串值,並設法得到它的工作

Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\ 
String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll 
+0

我也這麼做了。我剛剛創建了一個新密鑰,其中包含我在應用程序中使用的源名稱,並且它可以工作。 – Campinho 2015-02-25 00:13:48

0

對我來說只是工作IISRESET(運行CMD管理員 - > IISRESET)。也許有人可以試試看。

0

如果您在IIS上執行SenseNet TaskManagement網站的新安裝(源代碼而非WebPI),您將收到此消息,通常與SignalR通信有關。如@nicole-caliniou points out,這是由於註冊表中的關鍵字搜索失敗。

要解決這個SenseNet TaskManagement v1.1.0,首先在web.config文件中找到註冊表項名稱。默認情況下它是「SnTaskWeb」。

<appSettings> 
    <add key="LogSourceName" value="SnTaskWeb" /> 

打開註冊表編輯器,regedit.exe,並導航到HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask。右鍵單擊SnTask並選擇New Key,並將關鍵字SnTaskWeb命名爲上面顯示的配置。然後右鍵單擊SnTaskWeb元素並選擇New Expandable String Value。名稱應該是EventMessageFile,值數據應該是C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll

關鍵詞:signalr,sensenet,註冊表編輯器,權限

[寫入到事件日誌時System.Security.SecurityException(的
相關問題