3

我有一个应用程序,每次只能运行一个实例,但是如果启动第二个实例,则需要将它记录到第一个也可以使用的公共日志文件中。

我检查了有多少实例正在运行,我计划最初只是将其记录到事件记录器中,但是应用程序可以在用户或系统上下文中运行,并且在尝试以用户身份查询事件日志源时抛出异常,以便由于用户无法访问安全日志,因此该想法被废弃。

所以我想找出让同一个应用程序的 2 个单独实例写入日志文件的最安全方法是什么,这将确保两者都有机会写入它。

如果可以避免,我宁愿不使用现有的附加框架

任何帮助表示赞赏。

4

5 回答 5

3

Mutex可用于共享资源(如日志文件)的进程间同步。这是一个示例

于 2009-08-19T15:21:23.743 回答
1

您可以随时写入系统事件日志。无需锁定或任何需要,事件查看器比某些人认为的更强大。

在回复您的评论时,另一位用户在 SO 上询问了有关事件日志的写入权限的问题。链接到描述如何执行该操作的 msdn 文章的答案。

在这里看到那个问题。

于 2009-08-19T15:36:51.020 回答
0

如果你愿意,你可以避开这个问题......

如果这是一个 Windows 应用程序,您可以向第一个实例发送一条消息,然后退出。收到消息后,原始实例可以毫无问题地写入日志文件。

于 2009-08-19T15:24:45.033 回答
0

为什么不使用syslog协议?这将允许您以非常基于标准和灵活的方式交付日志。协议本身很简单,但是网上有很多例子,例如这里。如果您的应用程序是为企业使用而设计的,那么拥有标准的日志记录方式可能是一大优势。(而且,您也不需要维护文件 - 它成为专门软件的工作)

于 2009-08-19T15:28:36.667 回答
0

破解它的一种方法是对日志文件进行内存映射。这样,应用程序的两个实例共享文件的相同虚拟内存映像。然后有多种方法可以在文件中实现互斥锁。

于 2009-08-19T15:45:21.830 回答