我使用System.Diagnostics.EventLog来查看本地计算机上的日志.但是,我想打开一个保存的事件日志存档(.evt或.evtx)并查看保存文件中包含的日志.我只需要查看与文件中的日志相关联的时间戳,消息,来源等.这可以用C#完成吗?
我开始使用Boost Asio的TCP套接字.是什么区别read_some和receive与之间有什么区别write_some和send?谢谢!
我最近开始与Boost Asio合作.我注意到TCP套接字的receive方法接受message_flags作为参数.但是,我在message_flags中找到的文档只说它是一个整数而没有指定有效值.可以分配给message_flags的值是什么?它们是什么意思?
我想阅读远程计算机上的事件日志以检查测试期间的错误.这是一些相关的代码:
public bool CheckEventLogs(DateTime start)
{
EventLog myEventLog = new EventLog("CustomLog", "ServerName");
bool errorFound = false;
foreach (EventLogEntry entry in myEventLog.Entries)
{
if (entry.EntryType == EventLogEntryType.Error && entry.TimeGenerated >= start)
{
Console.WriteLine("Error in Event Log:\n" + entry.Message + "\n");
errorFound = true;
}
}
return errorFound;
}
Run Code Online (Sandbox Code Playgroud)
目前,此代码抛出异常(尝试执行未经授权的操作).根据MSDN,我需要EventLogPermission,但我一直在努力寻找如何使用此权限的任何示例.有没有人有如何做到这一点的例子?
编辑:对评论的回应
感谢大家的评论 - 这里是要求的其他信息:
foreach声明中抛出异常.具体来说,当逐步执行代码时,in它突出显示在步骤之后抛出.似乎我能够创建事件日志对象,但我无法访问事件日志中的条目.
我的帐户没有权限读取目标系统上的事件日志,但我有一个帐户的凭据.通过事件查看器手动连接时,可以选择以另一个用户身份进行连接.手动完成后,我的代码运行没有问题.但是,每次运行此程序时,我都不能依赖它.我需要的是一种以编程方式作为另一个用户连接的方法.我认为EventLogPermission这样做是可行的,但也许有另一种方式.如果有人知道如何以C#中的不同用户身份连接到远程日志,那正是我想要的.
我有一个像这样定义的标志枚举:
[Flags]
public enum MyEnum
{
None = 0x00,
Choice1 = 0x01,
Choice2 = 0x02,
Choice3 = 0x04,
Default = Choice1 | Choice2,
All = Default | Choice3
}
Run Code Online (Sandbox Code Playgroud)
我想要一种方法来打印出包含哪些标志MyEnum.Default.在这种情况下,我希望输出类似于"Choice1,Choice2".
简单打印的问题MyEnum.Default.ToString()是当我想要"Choice1,Choice2"时输出将是"默认".
这是一个选项,但如果我使用它,我每次更改枚举时都必须更新打印.
((StudyData.Choice1 & StudyData.Default) == StudyData.Choice1 ? StudyData.Choice1.ToString() : "") + ", " +
((StudyData.Choice2 & StudyData.Default) == StudyData.Choice2 ? StudyData.Choice2.ToString() : "") + ", " +
((StudyData.Choice3 & StudyData.Default) == StudyData.Choice3 ? StudyData.Choice3.ToString() : "")
Run Code Online (Sandbox Code Playgroud)
有没有人有更清洁的方式这样做?理想情况下,我想要一种打印出包含的标志的方法,MyEnum.Default而不必在每次添加新标志或更改默认值时更改打印代码.
谢谢!
我在C#中编写了一个带有设置文件的应用程序(用于在编译时创建app.config文件).此应用程序使用C#DLL,它也有一个设置文件.
我从这篇文章中读到以下内容:
如果您构建一个引用您的DLL的项目,您可以将相同的.settings文件添加到该项目,这些设置将显示在app的app.config文件中,DLL将能够读取这些值.如果这些值不在app.config中,则dll将回退到默认值.
我观察到DLL存储默认值,因为它表明它应该.我右键单击了我的应用程序项目并选择了Add Existing Item.然后我从我的DLL项目中找到了设置文件,并将其添加到应用程序的项目中.我希望DLL设置文件和应用程序设置文件都包含在应用程序的app.config文件中.这样,应用程序的app.config文件将覆盖存储在DLL中的默认值.不幸的是,这种情况并没有发生.
所以,我的问题是在将DLL项目中的设置添加到应用程序项目之后,如何让应用程序项目识别该文件并在编译时将其设置添加到app.config文件中?
c# ×4
boost ×2
boost-asio ×2
event-log ×2
.net ×1
app-config ×1
c++ ×1
dll ×1
enums ×1
file ×1
flags ×1
permissions ×1
settings ×1
tcp ×1