用于.NET中的Windows服务的进程内WMI提供程序

时间:2008-12-29 07:01:48

标签: c# .net windows-services wmi

如何编写进程内WMI提供程序作为用.NET编写的Windows服务的一部分?

我编写了一个使用解耦主机模型作为独立应用程序的提供程序,但无法弄清楚如何使用托管模型= ManagementHostingModel.NetworkService来运行Windows服务。

这是我正在使用的那种提供商:

    [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类,我只会抛出一些奇怪的异常。

似乎必须有一些我非常简单的东西。

1 个答案:

答案 0 :(得分:5)

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