c# - 有没有办法将任意数据关联到 Windows 进程?

标签 c# windows process windows-server-2012

我在服务器上编写了很多流程实例。我想将一些信息与每个过程相关联。在这种特定情况下,我想存储进程的“CurrentState”——“RUNNING|DRAINING|STOPPING”,但存储“Friendly Name”等对我来说会很有用。

我想从另一个“母”进程查询此信息 - 这个母进程将查询正在运行的进程并整理数据。

我想到了几种不同的方法来实现这一目标。例如,我可能会为每个感兴趣的进程打开一个 NetPipe 并请求数据,或者让每个进程定期广播它的状态。

我想知道:有没有一种方法可以针对 Windows 本身内置的进程存储键值对信息?是否有可接受的模式来执行此操作?

我控制子进程和母进程的源代码。它们是用 C# 编写的,P/Invoking 很好。操作系统为Windows 2012 R2。

最佳答案

您可以托管使用命名管道的 WCF 服务:

http://msdn.microsoft.com/en-us/library/ms733769(v=vs.110).aspx

根据您的一些评论,您似乎也可以考虑 System.AddIn (aka Managed AddIn Framework (MAF))创建、托管和与加载项通信的功能。 MAF 支持在您的应用程序域、单独的应用程序域或完全独立的进程中加载​​插件。 MAF 的缺点是它需要 5 个 DLL 才能开始,但这样做可以在版本和更改管道时为您提供很大的 API 兼容性灵 active 。

关于c# - 有没有办法将任意数据关联到 Windows 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24266543/

相关文章:

c# - 如何确定生日或周年纪念日是否发生在日期范围内

c# - 获取 WPF UIElement 的左上角坐标

windows - 我们如何启动守护进程?

windows - 在Win 10上访问Docker卷

c++ - 呈现 QWidgets 时出现大量页面错误

unix - 完成后如何停止iperf服务器?

c# - Entity framework如何获取两年之间的所有数据?

c# - 是否可以在 PC 的共享文件夹中使用 SQLite 数据库?

c# - 进程退出问题线程未成功退出

java - 通过 java 向 Minecraft 服务器发送命令