Soru Kod Kullanmadan Özel Olay Günlüğü Kaynağını Silme


Çıktısını filtrelemeye yardımcı olmak için bir dizi özel olay günlüğü kaynağı oluşturmuş bir uygulamam var. System.Diagnostics.EventLog.Delete kullanarak hızlı bir program çalıştıran herhangi bir kod yazmadan OLMAYAN özel kaynakları makineden nasıl silebilirim.

Özel kaynakları [HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog] 'dan kaldırmak için RegEdit kullanarak denedim, ancak uygulama günlükleri hala sahnelerin arkasında varmış gibi davranır.

Başka neyi özlüyorum?


37
2017-09-24 15:38


Menşei




Cevaplar:


Ayrıca, doğru yerde olduğunuzu düşünüyorum ... kayıt defterinde, olay günlüğünün adı altında saklanır. Birden fazla etkinlik kaynağı olan özel etkinlik günlüğüm var.

HKLM \ System \ CurrentControlSet \ Services \ Eventlog \ LOGNAME \ LOGSOURCE1   HKLM \ System \ CurrentControlSet \ Services \ Eventlog \ LOGNAME \ LOGSOURCE2

Bu kaynaklar bir EventMessageFile anahtar, hangisi REG_EXPAND_SZ ve puan:

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll

Örneğimde log kaynağı olan LOGSOURCE1 anahtarını silerseniz, gerekli olan tüm bu olmalıdır.

Değeri için onu .NET üzerinden denedim ve yaptıkları şey buydu. Ancak, her özel olay günlüğünün aynı ada sahip bir kaynağa sahip olduğu anlaşılıyor. Özel bir günlüğünüz varsa, bunu temizleme yeteneğinizi etkileyebilir. Belki günlükleri silmeniz gerekecek. Ayrıca, uygulamanızda bir yükleyici varsa, uygulama adının uygulama olay günlüğünde de kaynak olarak kaydedilebileceğini görebiliyorum. Temizlenecek bir yer daha.


40
2017-09-24 17:55



Thats var, kaynak anahtar altındaki girişi silerek onu sıraladı. Güzel temiz olay günlüğü ve uygulama kaynaklarını yeniden oluşturup doğru şekilde kullanıyor. Teşekkürler! - Wolfwyrd
Kayıt defteri ile uğraşmaktan nefret ediyorum, ama bazen tek yol bu. Ne yazık ki, EventLogs gibi bir EventSources etkin bir şekilde numaralandıramazsınız. Varlığı test edebilirsin, bir isim veriyorsun, ama onların içinden geçemezsin. - Mike L
Powerlog'un Get_ChildItem "HKLM: \ SYSTEM \ CurrentControlSet \ services \ eventlog \ ..." ile joker karakterine göre eventlog kaynaklarının bir listesini alabilirsiniz. -Name Bunu bir metin düzenleyicide virgülle ayrılmış bir listeye bölerseniz, bunu kullanabilirsiniz. Birden çok olay kaynağını bir kerede silmek için Cmdlet Remove-Eventlog -Source <string []> ile. Benzer isimlere sahip kaynakları silmek istiyorsanız çok kullanışlıdır. - needfulthing
@Needfulthing'in eklendiği bina üzerinde, Powershell'de belirli bir günlüğün kaynaklarını da bu şekilde numaralandırabilirsiniz: "Get-EventLog -LogName YOURLOGNAMEHERE | Grup Nesnesi - Uygunluk Kaynağı", bu da size kaynakları (ve olay günlüğü girdileri için sayımları) verir. herbirinden). Kaldırma işlemini yapmak için Remove-Eventlog -Source'ı takip edebilirsiniz. - Mike L


Ne kullanıyorsun Güç kalkanı?

Remove-EventLog -LogName "Custom log name"

Remove-EventLog -Source "Custom source name"

26
2018-03-06 16:12



Bunun 7 yıl önce PowerShell'de desteklendiğini sanmıyorum (v3 ile piyasaya sürülmüş gibi görünüyor) ama modern bir çözüm için +1! - Wolfwyrd


Sadece kullanarak silmek mümkün oldu:

[System.Diagnostics.EventLog]::Delete("WrongNamedEventLog");

powershell içinde


4
2018-05-24 14:40





Belki de uygulamanız hata toleranslıdır, yani olay günlüğü kaynağının kayıtlı olup olmadığını kontrol edip, kaydetmiyorsa kaynağı kaydeder mi?

Bu durumda, yaptığınız her ne olursa olsun, başvurunuz her seferinde kaynak (lar) ı yeniden oluşturacaktır.


3
2017-09-24 15:46



Bunun bir parçası olabilir. Gördüğümüz sorun, özel kaynaklarına yazmak yerine, Uygulama günlüğüne dökülüyor olmasıdır. Bu hatanın kaynağı düzeltildi ve biz sadece olay günlüğünü temizlemeye çalışıyoruz, böylece yeni baştan başlayabiliriz. - Wolfwyrd