소스를 찾을 수 없지만 일부 또는 모든 이벤트 로그를 검색 할 수 없습니다


125

다음과 같은 예외가 발생합니다. 레지스트리 편집의 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

이것이 서버의 일부 구성 문제 때문이라고 생각합니까?



내 답변을 게시하고 중재자가 삭제했습니다. 로컬 시스템은 이벤트 로그와 소스 만 작성할 수 있으므로 서비스를 로컬 시스템으로 실행해야합니다. 네트워크 서비스로 서비스를 실행하고 있는데이 예외가 발생했습니다. 나중에 서비스를 중지하고 로컬 시스템으로 다시 시작했으며 정상적으로 작동했으며 그 후에 네트워크 서비스로 서비스를 중지했다가 다시 시작하여 정상적으로 작동했습니다.
Ziggler

답변:


105

EventLog.SourceExists하위 키를 열거 HKLM\SYSTEM\CurrentControlSet\services\eventlog하여 지정된 이름의 하위 키가 포함되어 있는지 확인합니다. 코드가 실행중인 사용자 계정에 Security대상 소스를 찾기 전에 액세스하려는 하위 키 (귀하의 경우 하위 키)에 대한 읽기 액세스 권한이없는 경우 설명한 것과 같은 예외가 표시됩니다.

이러한 문제를 처리하는 일반적인 방법 은 설치시 (관리자 계정으로) 이벤트 로그 소스등록한 다음 런타임에 존재한다고 가정하여 대상 이벤트 로그 소스가 실제로 존재하지 않는 경우 결과 예외가 예상치 못한 것으로 처리되도록하는 것입니다. 런타임에.


26
Windows 8에서는 UAC를 비활성화하고 사용자가 관리자 인 경우에도 여전히 관리자로 VS를 실행해야합니다. 이것이 내 경우에 대한 해결책이다
itsho

2
저에게는 처음으로 응용 프로그램을 관리자로 실행하는 것으로 충분했습니다. 그 후, 이벤트 소스가 작성되었고 응용 프로그램이 제대로 작동했습니다.
thomaskonrad

2
이것은 OS에 포함 된 도구를 사용하여 창을 방해하지 않는 방법에 대한 예입니다.
Felice Pollano

67

같은 예외가 있었다. 제 경우에는 관리자 권한으로 명령 프롬프트를 실행해야했습니다.

시작 메뉴에서 명령 프롬프트를 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오.


2
광산 상황은 관리자로 Visual Studio 2015를 실행하는 것입니다. (Web API 프로젝트 수행)
Kevin .NET

9

나를 위해이 오류는 관리자 권한으로 실행되지 않는 명령 프롬프트로 인한 것입니다. 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭하고 " 관리자 권한으로 실행 "이라고 말해야합니다 .

서비스를 설치하거나 제거하려면 관리자 역할이 필요합니다.


나는 약 2 시간 동안 혼란 스러웠다.
Mox Shah

8

"관리자 권한으로"개발자 명령 행을 실행하십시오. 이 계정은 보안 로그에 대한 전체 액세스 권한이 있습니다


6

나를 위해 일하지 않았다.

새로운 키와 문자열 값을 만들고 작동하도록 관리했습니다.

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

나는 똑같이했다. 방금 내 응용 프로그램에서 사용하는 소스 이름으로 새 키를 만들었고 작동했습니다.
Campinho

1

나를 위해 방금 iisreset 작업했습니다 (관리자 권한으로 cmd를 실행-> iisreset). 누군가가 시도해 볼 수도 있습니다.


1

액세스 할 수없는 로그 : 보안

새 이벤트 소스는 보안 (읽을 때 관리자 권한이 필요함)을 포함한 모든 로그 에서 고유 한 이름 을 가져야 합니다 .

소스를 만들려면 앱에 관리자 권한 이 필요 합니다. 그러나 그것은 아마도 과잉 일 것입니다.

필자는이 Powershell 스크립트 를 작성하여 원하는대로 이벤트 소스를 작성했습니다. 로 저장 *.ps1하고 그것을 실행하는 모든 특권과 그 자체를 높이는 것입니다.

# CHECK OR RUN AS ADMIN

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

# CHECK FOR EXISTENCE OR CREATE

$source = "My Service Event Source";
$logname = "Application";

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
    Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green;
}
else
{
    Write-Host $source -f white -nonewline; Write-Host " already exists.";
}

# DONE

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');

1

나는 최근에 오류를 경험했으며 어떤 해결책도 나를 위해 일하지 않았다. 나를 위해 오류를 해결 한 것은 컴퓨터 관리에서 응용 프로그램 풀 사용자를 고급 사용자 그룹에 추가하는 것이 었습니다. 회사 정책으로 인해 관리자 그룹을 사용할 수 없습니다.


0

IIS에서 SenseNet TaskManagement 웹 사이트를 새로 설치하는 경우 (WebPI가 아닌 소스 코드에서) 일반적으로 SignalR 통신과 관련된이 메시지가 표시됩니다. 따라 @ 니콜 - caliniou는 지적 그것으로 인해 실패 레지스트리의 핵심 검색하는 것입니다.

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.

키워드 : 신호기, 센스 넷, regedit, 권한


0

소스가 로컬 시스템에 존재하는지 스니핑하고 싶지만이를 수행 할 수있는 권한이없는 경우 다음 예제 (VB)를 통해 입력 할 수 있습니다.

이것은 보안 오류를 무시합니다. 소스의 LogName을 리턴하도록이 함수를 유사하게 수정할 수 있습니다.

Public Shared Function eventLogSourceExists(sSource as String) as Boolean
    Try
        EventLog.LogNameFromSourceName(sSource, ".")
        Return True
    Catch
        Return False
    End Try
End Function
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.