2008-12-29 89 views
2

如何在.NET中编写Windows进程的过程中编写进程内WMI提供程序?.NET中用于Windows服务的进程内WMI提供程序

我已经编写了一个使用解耦主机模型作为独立应用程序的提供程序,但无法弄清楚如何获取使用Hosting Model = ManagementHostingModel.NetworkService的Windows Service。

这是我使用的供应商类型:

[ManagementEntity] 
public class Stuff 
{ 
    private readonly string _id; 

    public Stuff(string id) 
    { 
     _id = id; 
    } 

    [ManagementKey] 
    public string Id 
    { 
     get { return _id; } 
    } 

    [ManagementProbe] 
    public DateTime Time 
    { 
     get { return DateTime.UtcNow; } 
    } 

    [ManagementEnumerator] 
    public static IEnumerable Enumerate() 
    { 
     for (int i = 0; i < 5; i++) 
     { 
      yield return new Stuff(i.ToString()); 
     } 
    } 
} 

我哪一个寄存器中:

InstrumentationManager.RegisterType(typeof (Stuff)); 

每次我试着访问WMI类试图读取属性值时, ,我只是得到一些怪异的抛出异常。

这似乎是一定有一些非常简单的东西,我忽略了。

回答

5

我唯一缺少的就是进程内提供程序必须安装在GAC中。有关更多详细信息,请参阅this article

+0

如何获得有关您的特定服务提供商的信息?我发现的所有例子都提供了罐头数据(比如`Stuff`)或者系统数据(比如`DateTime.UtcNow`,或者像正在运行的进程列表)。如果耦合提供者正在被WMI主机实例化并运行,那么它是如何获得特定于应用程序的数据的? – Eric 2012-01-12 04:15:12

相关问题