2013-07-29 32 views
8

Tôi đang cố gắng truy cập các sự kiện một 'ForwardedEvents' đăng nhập vào một máy chủ sử dụngthêm bản ghi sự kiện đăng kiểm

el = new EventLog("ForwardedEvents", serverName); 

đây không phải đang làm việc.

Tôi tin rằng nó không hoạt động vì nhật ký không được chứa trong sổ đăng ký nơi Eventlog sẽ tìm thấy nó (HKLM/System/CurrentControlSet/Services/Eventlog/..).

Cách thêm nhật ký vào sổ đăng ký để tìm thấy hoặc có phương pháp khác để truy cập nhật ký không được chỉ định ở vị trí đó không?

Trả lời

9

Khắc phục sự cố bằng cách tạo mục đăng ký mới cho Nhật ký tại: (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ LOGNAME).

Did này bằng cách .. (trên windows server 2008 R2) ..

1) Nhấp chuột phải vào thư mục mẹ (eventlog) -> New -> Key

2) Đặt tên cho phím như evtx tập tin tìm thấy tại (C: \ Windows \ System32 \ winevt \ Logs \ LOGNAME)

3) trong cửa sổ bên phải của nhà thám hiểm registry, nhấn chuột phải -> mới -> Có thể mở rộng string Value

4) Đặt tên cho tệp REG_EXPAND_SZ "mới được tạo"

5) Nhấp chuột phải vào tên "File"

6) Sửa đổi

7) Trong mục "Value Data" hộp, thêm đường dẫn đến evtx tập tin như

(% SystemRoot% \ System32 \ winevt \ Logs \ ForwardedEvents.evtx)

+1

Câu trả lời này đã giúp tôi, cảm ơn! Dường như nó hoạt động mà không cần thêm Giá trị Chuỗi có thể mở rộng hoặc chỉnh sửa giá trị Tệp. Tôi đã thêm [câu trả lời này] (http://stackoverflow.com/questions/19803351/how-do-i-read-from-an-arbitrary-evxt-file-using-system-diagnostics-eventlog) chi tiết cách tôi giải quyết nó. – dharmatech

2

Nếu bạn vẫn muốn làm điều này theo cách lập trình trái ngược với việc tạo nhật ký thủ công thông qua sổ đăng ký, có một cách. Bạn cần phải kiểm tra và xem liệu EventSource có tồn tại trước không và nếu bạn không cần tạo nó. Điều này phải xảy ra trước khi bạn cố tạo một cá thể EventLog với nguồn đó. Chỉ cần lưu ý độ trễ giữa việc tạo và sử dụng, vì vậy hãy đảm bảo xử lý điều này (xem http://msdn.microsoft.com/en-us/library/2awhba7a(v=vs.110).aspx để biết thêm thông tin).

// Create the source, if it does not already exist. 
if(!EventLog.SourceExists("MySource")) 
{ 
    //An event log source should not be created and immediately used. 
    //There is a latency time to enable the source, it should be created 
    //prior to executing the application that uses the source. 
    //Execute this sample a second time to use the new source. 
    EventLog.CreateEventSource("MySource", "MyNewLog"); 
    Console.WriteLine("CreatedEventSource"); 
    Console.WriteLine("Exiting, execute the application a second time to use the source."); 
    // The source is created. Exit the application to allow it to be registered. 
    return; 
} 

// Create an EventLog instance and assign its source. 
EventLog myLog = new EventLog(); 
myLog.Source = "MySource"; 

// Write an informational entry to the event log.  
myLog.WriteEntry("Writing to event log."); 
+0

Một vấn đề nhỏ với mã của bạn là nếu bạn sử dụng OS> = Vista, trừ khi bạn có đặc quyền quản trị thì SourceExists sẽ thất bại với SecurityException (như tôi vừa phát hiện khi chuyển mã từ XP sang W7). Trong trường hợp đó, bạn cần tự cấp quyền quản trị ứng dụng hoặc tự tạo khóa (bằng tay hoặc trong quá trình cài đặt .msi) –

+0

Nếu bạn chạy ứng dụng với tư cách Quản trị viên, bạn không nên gặp bất kỳ sự cố nào. Nếu bit UAC vẫn còn phù hợp, bạn có thể chạy dấu nhắc lệnh với tư cách Quản trị viên, sau đó chạy ứng dụng có chứa mã này từ đó bằng cách điều hướng bằng DOS đến đường dẫn của ứng dụng (ví dụ: nếu ứng dụng của bạn được gọi là "myapp.exe" và trong C: \ Temp, sau đó: 'C:> cd C: \ Temp' rồi' C: \ Temp> myapp.exe'). – vapcguy

1

Đây là gần với giải pháp đăng ký khác được cung cấp ở đây, nhưng đây là cách tôi đã làm nó trên Windows 7, và sẽ ghi vào Nhật ký ứng dụng, không phải là sự kiện Forwarded đăng nhập:

  • windows logo> gõ regedit trong việc tìm kiếm và nhấn Enter

  • Mở rộng HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog

  • Tìm chìa khóa Application và tạo một khóa mới cho ứng dụng của bạn: MyApp

  • Trong MyApp, kích chuột phải vào cửa sổ bên phải trong vùng trống và chọn New> String Value mở rộng.Điều này sẽ tạo một mục nhập REG_EXPAND_SZ. Đặt tên cho nó là EventMessageFile.

  • Nhấp đúp vào mục nhập mới để đặt giá trị. Để biết giá trị, hãy nhập: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\EventLogMessages.dll Chọn OK.

  • Để riêng giá trị chuỗi (Default) với giá trị (value not set) của nó.

  • Lặp lại hai lần nữa bằng cách thay thế CurrentControlSet bằng ControlSet001ControlSet002.

Và nếu bạn cần chuyển ứng dụng sang máy tính khác, bạn có thể nhấp chuột phải vào phím và chọn Export. Bạn lưu tệp dưới dạng tệp .reg và sau đó sao chép tệp đó vào máy tính tiếp theo. Ở đó, bạn bấm đúp để chạy nó (trong khi đăng nhập với tư cách Quản trị viên). Bằng cách này, bạn không cần phải tạo lại thủ công và đối với các ứng dụng khác, bạn có thể chỉnh sửa tệp .reg trong Notepad và chỉ cần thay đổi tên của ứng dụng, lưu nó (đảm bảo thay đổi định dạng thành " Tất cả các tập tin ", do đó, nó giữ lại .reg vào cuối, và không lưu nó như là một tập tin .txt), và sau đó bạn có thể nhấp đúp vào nó để chạy và chèn khóa EventLog của ứng dụng mới.

Các vấn đề liên quan