Внутрипроцессный поставщик WMI для службы Windows в .NET - PullRequest
2 голосов
/ 29 декабря 2008

Как вы пишете внутрипроцессного поставщика WMI как часть службы Windows, написанной на .NET?

Я написал провайдера, который использует модель разъединенного хостинга в качестве отдельного приложения, но не могу понять, как получить службу Windows, которая использует для работы хостинговую модель = ManagementHostingModel.NetworkService.

Я использую такой провайдер:

    [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 Ответ

5 голосов
/ 30 декабря 2008

Единственное, чего мне не хватало, это того, что в GAC должны быть установлены внутрипроцессные поставщики. Подробнее см. в этой статье .

...