未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]

Posted

技术标签:

【中文标题】未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]【英文标题】:The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security [duplicate] 【发布时间】:2013-12-05 00:48:15 【问题描述】:

我收到错误:

未找到源,但无法找到部分或全部事件日志 搜索。无法访问的日志:安全性

当我运行以下代码以捕获 Win 2K12 R2 服务器 IIS 8.5 上的错误时

EventLog elog = new EventLog();
EventLog.CreateEventSource("MyApp", "Application");
EventLog.WriteEntry(Source, swError.ToString(), EventLogEntryType.Error);

我已授予对HKLM\SYSTEM\CurrentControlSet\services\eventlog 的完全访问权限,但它仍然无法正常工作。我该怎么做才能解决它?

【问题讨论】:

您为哪个用户授予了HKLM\SYSTEM\CurrentControlSet\services\eventlog的完全访问权限? 网络服务和IIS用户 您可能需要为您的application pool identity添加它 我的回答是否解决了问题?如果有其他问题,请报告。 检查这个The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security. 【参考方案1】:

见creating a registry key。

这个问题不仅可能是由于权限问题,还可能是由于未成功注册事件源密钥丢失(您需要管理员权限才能做到这一点 - 如果您只是像往常一样打开 Visual Studio 并正常运行程序这还不够)。确保您的事件源“MyApp”实际已注册,即它出现在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application 下的注册表中。

来自MSDN EventLog.CreateEventSource():

在 Windows Vista 及更高版本或 Windows Server 中创建事件源 2003,您必须具有管理权限。

因此,您必须以管理员身份运行事件源注册代码(另外,检查源之前是否已经存在 - 请参阅上面的 MSDN 示例),或者您可以手动将密钥添加到注册表:

    创建一个注册密钥HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MyApp; 在里面,创建一个字符串值EventMessageFile并将其值设置为例如C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

【讨论】:

如果您使用较新的框架,EventMessageFile 的值可能是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll 我正在寻找我的应用程序的注册名称,但缺少的注册表项实际上是“我的应用程序”。 底线:它在EventLog.CreateEventSource() 上失败,因为创建密钥需要管理员权限。他要么需要以所述权限运行应用程序(或 Visual Studio,如果在运行时进行调试),或者提前创建密钥并检查它而不是创建它,如果它已经存在。 这不是一个正确的解决方案,尤其是对于最终用户。 您必须在代码中暂时禁用模拟,更多详情请查看此The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.【参考方案2】:

我在运行 Visual Studio 时遇到此错误。通过running Visual Studio as Administrator,应用程序能够访问安全日志,因为它拥有足够的权限(从而防止了错误)。

【讨论】:

即使使用 VS(以管理员身份运行),我也必须添加注册表项。 以管理员身份运行对我有用。 Windows 8.1 VS 2017 社区 以管理员身份运行 VS 对我有用(Win10、VS 2019) 这不是一个正确的解决方案,尤其是对最终用户而言。【参考方案3】:

我知道,我参加聚会有点晚了……发生了很多事情,您只需在 IIS 的 应用程序池 中使用默认设置。在 IIS 管理实用程序中,转到app pools->select pool-->advanced settings->Process Model/Identity 并选择具有正确权限的用户身份。默认情况下,它设置为ApplicationPoolIdentity。如果您是开发人员,您很可能是您机器上的管理员,因此您可以选择您的帐户来运行应用程序池。在部署服务器上,让管理员处理它。

【讨论】:

【参考方案4】:

每当您启动 Visual Studio 时,以管理员身份运行它。它对我有用。

【讨论】:

谁说的“视觉工作室”?你说!问题没有提到这个 当我看到这个错误时,我还必须以管理员身份运行 VS 开发人员命令提示符。【参考方案5】:

我在本地以管理员权限运行visual studio,错误消失了。

如果您在任务计划程序中遇到此错误,您必须选中以高权限运行的选项

【讨论】:

谁说的“视觉工作室”?你说!问题没有提到这个 如果您使用 Visual Studio 2017 >> Developer Command Prompt for VS 2017 >> installutil.exe 部署服务,则会收到与此页面标题完全匹配的错误,因此这是一个相当不错的放置位置这个答案(适用于 Visual Studio 用户)。当我以管理员身份再次运行命令提示符时,它可以解决错误。【参考方案6】:

尝试为 AppPool ID 或网络服务提供任何适用的访问权限 HKLM\SYSTEM\CurrentControlSet\services\eventlog\security。我遇到了同样的错误..这对我有用。看到错误还说无法访问的日志是安全日志。

我也在 eventlog\application 中授予了权限。

我在任何地方都授予了完全访问权限。

【讨论】:

【参考方案7】:

这也可能是因为它可能无法找到所需的 .dll 文件。 文件不在文件夹中或已重命名。 我遇到了同样的问题,发现我的 bin 文件夹中缺少 .dll 文件。

【讨论】:

【参考方案8】:

在 Visual Studio 中调试时,在应用程序池高级设置中使用 NetworkService 作为标识值。 ApplicationPoolIdentity 如果您直接从浏览器打开站点(或转到 IIS 中的虚拟目录并使用右侧的“浏览”选项),则该站点可以正常工作。

【讨论】:

【参考方案9】:

我最近开始在使用 Visual Studio 2013 的内部 NLog 故障日志中收到此错误。该解决方案已使用 NLog v2.0.0 好几年了。在上个月内,我们的主日志停止工作。为了解决这个问题,我通过 Nuget 将 NLog 更新到了最新版本(v3.1.0)。安全异常现已消失,所有日志消息都再次出现。

此外,我后来发现了另一个安全异常,并且能够按照post in another thread 上的说明进行修复。

【讨论】:

以上是关于未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

找不到源,但无法搜索部分或全部事件日志

事件日志代码错误无法找到事件源?

SQLSERVER 服务 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其他适用的错误日志

VSTS API REST无法正确下载源

搜索后未找到访问表单记录源

Vshpere client登录VC报错