是否有一种方法将任意数据关联到Windows进程
本文关键字:数据 任意 关联 进程 Windows 方法 一种 是否 | 更新日期: 2023-09-27 18:09:03
我在服务器上编写了许多进程实例。我想把一些信息与每个过程联系起来。在这个特定的情况下,我想存储进程的"当前状态"-"RUNNING| drain | stop",但是存储一个"友好名称"等等对我来说会很有用。
我想从另一个"母"进程中查询这些信息——这个母进程将查询正在运行的进程并整理数据。
我想到了几种不同的方法来实现这一点。例如,我可以打开一个NetPipe到每个感兴趣的进程并请求数据,或者让每个进程定期广播它的状态。
我想知道:有没有一种方法来存储键值对信息对进程内置到Windows本身?是否有一个公认的模式来做这件事?
控制子进程和母进程的源。它们是用c#编写的,P/调用是可以的。操作系统为Windows 2012 R2
可以托管使用命名管道的WCF服务:
http://msdn.microsoft.com/en-us/library/ms733769 (v = vs.110) . aspx
根据你的一些评论,看起来你也可以考虑这个系统。插件(又名Managed AddIn Framework (MAF))功能,用于创建、托管和与插件通信。MAF支持在你的应用域、一个单独的应用域或一个完全独立的进程中加载插件。MAF的缺点是它需要5个dll来启动,但这样做可以在API兼容性方面为您提供很大的灵活性,因为您需要版本和更改管道。
如果你正在控制来自母进程的数据,你也可以使用AppDomains来加载其他进程,并通过封送数据(如Status类)进行通信,或者使用AppDomains来设置和获取数据。
请注意,您传输的任何Status数据要么需要是从封送处理类派生的类,要么需要标记为Serializable。这样做的原因是因为appdomain在操作系统中被视为不同的进程,所以它们不能访问彼此的内存,实际上必须像通过IPC传递一样序列化数据。
看看。net进程类:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process (v = vs.110) . aspx
您可以使用它来获取所有正在运行的进程,启动进程,获取进程的唯一Id,并在进程退出时收到警报。这将为您提供跟踪流程所需的一切。
子进程可以调用Process。GetCurrentProcess获取自己的进程id,然后调用"母"进程来关联关于自身的任意数据。