未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]
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 上的说明进行修复。
【讨论】:
以上是关于未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]的主要内容,如果未能解决你的问题,请参考以下文章