我想使用 C# 从 Windows 事件日志中删除一个事件。
谁能指出我如何实现这一目标的正确方向?
最佳答案
简单 :).
但是删除看起来像从数组中删除项目,您需要复制所有数组,除了您需要删除的项目。
有一个例子,如何“从日志中删除项目索引为非偶数的每个项目”。
using System;
using System.Collections;
using System.Diagnostics;
using System.Threading;
class EventLogEntryCollection_Item
{
/// <summary>
/// Prints all.
/// </summary>
/// <param name="myEventLogEntryCollection">My event log entry collection.</param>
private static void PrintAll(EventLogEntryCollection myEventLogEntryCollection)
{
for (int i = 0; i < myEventLogEntryCollection.Count; i++)
{
Console.WriteLine("The Message of the EventLog is :"
+ myEventLogEntryCollection[i].Message);
}
}
/// <summary>
/// Creates the new log message.
/// </summary>
/// <param name="LogName">Name of the log.</param>
/// <param name="message">The message.</param>
private static void CreateNewLogMessage(string LogName, string message)
{
EventLog myEventLog = new EventLog();
myEventLog.Source = LogName;
myEventLog.WriteEntry(message);
myEventLog.Close();
}
/// <summary>
/// Mains this instance.
/// </summary>
public static void Main()
{
try
{
// Check if the source exists.
if (!EventLog.SourceExists("MySource"))
{
// Create the source.
// 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.
EventLog.CreateEventSource("MySource", "MySource");
Console.WriteLine("Creating EventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
Thread.Sleep(2000);
// The source is created. sleep to allow it to be registered.
}
string myLogName = EventLog.LogNameFromSourceName("MySource", ".");
// Create a new EventLog object.
EventLog myEventLog1 = new EventLog();
myEventLog1.Log = myLogName;
//Create test messages.
myEventLog1.Clear();
for (int i = 0; i < 20; i++)
{
CreateNewLogMessage("MySource", "The entry number is " + i);
}
// Obtain the Log Entries of "MyNewLog".
EventLogEntryCollection myEventLogEntryCollection =
myEventLog1.Entries;
//myEventLog1.Close();
Console.WriteLine("The number of entries in 'MyNewLog' = "
+ myEventLogEntryCollection.Count);
// Copy the EventLog entries to Array of type EventLogEntry.
EventLogEntry[] myEventLogEntryArray =
new EventLogEntry[myEventLogEntryCollection.Count];
myEventLogEntryCollection.CopyTo(myEventLogEntryArray, 0);
Console.WriteLine("before deleting");
// Display the 'Message' property of EventLogEntry.
PrintAll(myEventLogEntryCollection);
myEventLog1.Clear();
Console.WriteLine("process deleting");
foreach (EventLogEntry myEventLogEntry in myEventLogEntryArray)
{
//Console.WriteLine("The LocalTime the Event is generated is "
// + myEventLogEntry.TimeGenerated + " ; " + myEventLogEntry.Message);
if (myEventLogEntry.Index % 2 == 0)
{
CreateNewLogMessage("MySource", myEventLogEntry.Message);
}
}
Console.WriteLine("after deleting");
PrintAll(myEventLogEntryCollection);
myEventLog1.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception:{0}", e.Message);
}
Console.ReadKey();
}
}
关于C# 管理窗口事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/563185/
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
例如,假设我有一个名为Products的模型,并且在ProductsController中,我有以下代码用于product_listView以显示已排序的产品。@products=Product.order(params[:order_by])让我们想象一下,在product_listView中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常更改。我很难理解的是,每次用户选择新的order_by过滤器时,rails是否必须查询,或者rails是否能够以某种方式缓存事件记录以在服务器端重新排序?有没有一种方法可以编写它,以便在用户排序时rails不会重新查询结果