我有一个应用程序,每次只能运行一个实例,但是如果启动第二个实例,则需要将它记录到第一个也可以使用的公共日志文件中。
我检查了有多少实例正在运行,我计划最初只是将其记录到事件记录器中,但是应用程序可以在用户或系统上下文中运行,并且在尝试以用户身份查询事件日志源时抛出异常,以便由于用户无法访问安全日志,因此该想法被废弃。
所以我想找出让同一个应用程序的 2 个单独实例写入日志文件的最安全方法是什么,这将确保两者都有机会写入它。
如果可以避免,我宁愿不使用现有的附加框架
任何帮助表示赞赏。
您可以随时写入系统事件日志。无需锁定或任何需要,事件查看器比某些人认为的更强大。
在回复您的评论时,另一位用户在 SO 上询问了有关事件日志的写入权限的问题。链接到描述如何执行该操作的 msdn 文章的答案。
在这里看到那个问题。
如果你愿意,你可以避开这个问题......
如果这是一个 Windows 应用程序,您可以向第一个实例发送一条消息,然后退出。收到消息后,原始实例可以毫无问题地写入日志文件。
破解它的一种方法是对日志文件进行内存映射。这样,应用程序的两个实例共享文件的相同虚拟内存映像。然后有多种方法可以在文件中实现互斥锁。