2013-12-18 4 views
0

이벤트 로그 작성자를 만들었으며 로컬로 완벽하게 작동합니다. 원격 이벤트 로그를 만들려고 할 때 나에게이 메시지를 제공합니다 : 이벤트가 다른 컴퓨터에서 시작된 경우이벤트 로그 작성자가 원격 컴퓨터에서 일반 메시지를 제공합니다.

를 표시 정보 이벤트와 함께 저장해야했습니다.

그리고 이벤트 로그에 추가됩니다. 현재의 방법은 원격 서버에서 레지스트리를 변경하는 것과 관련이 있습니다. 온라인을 통해 웹 서비스를 사용하여 원격으로 이벤트 로그를 수행 할 수 있습니까? 나는 웹 서비스를 만드는 데 완전히 빠져 있습니다. 전에 한 번도 만들지 않았기 때문에, 누군가 올바른 방향으로 나를 가리킬 수 있습니까? 또한 프로덕션 환경에 있기 때문에 원격 서버에서 레지스트리 변경을 피하려고합니다.

내 현재 코드 :

else if (RemoteText.Text != "") 
{ 
    int EventID = Convert.ToInt32(EventIdText.Text); 
    string myLogName = ""; 

    if (!EventLog.SourceExists(SourceText.Text)) 
    { 
     //Create source. 
     EventLog.CreateEventSource(SourceText.Text, myLogName, RemoteText.Text); 
     Console.WriteLine("Creating EventSource"); 
    } 
    else 
    { 
     // Get the EventLog associated if the source exists. 
     myLogName = EventLog.LogNameFromSourceName(SourceText.Text, RemoteText.Text); 

     EventLog myEventLog1 = new EventLog(myLogName, RemoteText.Text); 
     myEventLog1.Source = myLogName; 
     // Write an entry into log. 
     myEventLog1.WriteEntry("This is for your information", 
     EventLogEntryType.Error, EventID); 
    } 

    MessageBox.Show("Event Creation was SUCCESSFUL"); 

내 목표는 원격 컴퓨터에서 일반 메시지를 제거하고 원격 컴퓨터에서 레지스트리 변경을 방지하는 것입니다.

답변

0

이벤트 소스를 만들려면 HKLM\System\CurrentControlSet\eventlog 키에 대한 쓰기 권한이 있어야합니다.

시도 EventSourceCreationData 메시지 파일이 누락되었을 수 있습니다.

원격 컴퓨터에 관리자 권한이 있고 서버에 원격 레지스트리가 꺼져 있지 않은 경우 WMI을 사용하여 레지스트리 사용 권한을 변경하고 다시 시도 할 수 있습니다. 이벤트가 다른 컴퓨터에서 시작된 경우

+0

웹 서비스 메서드를 사용하면 어떻게됩니까?이벤트 로그 설명에 추가되는 일반 메시지가 제거 될 것인가? – SlopTonio

+0

레지스트리 변경에 대한 필요성을 우회 할 수있는 특정 웹 서비스 기반 방법에 대해서는 잘 모릅니다. 귀하의 코드가 소스를 만들 수 없기 때문에 일반 메시지가 추가 된 것 같습니다. –

+0

설명은 원격 컴퓨터로 보내지 만 Windows는 설명에 추가 텍스트를 추가합니다.이 텍스트는 로컬 컴퓨터에서 수행되지 않기 때문에 나에게 실망 스럽습니다. – SlopTonio

0

는, 디스플레이 정보는 이벤트

이벤트 소스가 정의되지 않은 경우이 오류가 함께 저장되어야했다. 이벤트 로그 항목을 이벤트 로그에 기록 할 때 기본적으로 ID 및 이벤트 로그 항목과 관련된 일부 매개 변수 만 씁니다. 그런 다음 이벤트 로그 항목을 볼 때 Windows는 이벤트 소스와 연관된 메시지 파일을 사용하여 실제로 항목의 형식을 지정합니다. ID에서 메시지 템플리트가 검색되고 메시지 템플리트에서 매개 변수가 대체되어 이벤트 표시기에서 볼 수있는 형식화 된 메시지를 작성합니다. 이 방법을 사용하면 다른 언어 버전의 Windows에 대해 번역 된 이벤트 로그 메시지를 제공 할 수 있습니다.

이벤트 소스가 정의되지 않은 경우, Windows는 메시지 파일을 찾을 수 없으므로 이벤트 표시기에서 이벤트 로그 항목을 보려고하면 사용자가 설명하는 오류가 발생합니다.

이벤트 로그 항목을 컴퓨터의 원본에 올바르게 기록하려면 원본을 만들어야하며이를 위해서는 레지스트리에 대한 관리 쓰기 권한이 필요합니다 (권한 상승 관리자를 사용하여 수행 할 수 있음). 따라서 현재의 접근 방식은 올바른 것으로 보이며 피해야하는 대상이 아닙니다.

종종 .NET 개발자는 이벤트 로그 메시지 파일로 작업하는 데 경험이 없습니다. .NET에서 이벤트 로그에 기록하는 기본 API는 형식이 지정된 메시지에 입력 한 문자열 매개 변수를 단순히 대체하는 일반 메시지 파일을 등록하고 사용합니다. 이 기능을 사용하면 .NET에서 이벤트 로그에 쉽게 쓸 수 있지만 작업에 필요한 중간 메시지 파일이 있다는 것을 알지 못하기 때문에 조금 혼란 스럽습니다.