Я пытаюсь написать пользовательский развязанный поставщик WMI в C #.Я следовал примерам и, тем не менее, всякий раз, когда я пытаюсь получить доступ к своему классу WMI из WMI Studio, через PowerShell или через wmic , он просто зависает там до тех пор, пока я не завершу работу хост-приложения провайдера.Я получаю ошибку в диапазоне от «Недопустимый класс» до «Ошибка удаленного вызова процедуры».
Я вижу, что мой поставщик WMI нормально работает, если я не пытаюсь получить к нему доступ, поэтому я знаю, что эторегистрация в WMI.
Вот код, который я запускаю:
[assembly: WmiConfiguration(@"root\CIMV2", HostingModel=ManagementHostingModel.Decoupled)]
[RunInstaller(true)]
public class WmiInstaller : DefaultManagementInstaller { }
[ManagementEntity(Singleton=true)]
[ManagementQualifier("Description", Value="Accesses and manipulates licenses held in the SLN license database.")]
public class SoftwareLicensingNetworkLicenseDatabase {
[ManagementBind]
public SoftwareLicensingNetworkLicenseDatabase() { Test = "OMG!"; }
[ManagementProbe]
public string Test;
}
А затем в моей основной функции:
[STAThread]
static void Main() {
InstrumentationManager.RegisterType(typeof(SoftwareLicensingNetworkLicenseDatabase));
Console.ReadLine();
InstrumentationManager.UnregisterType(typeof(SoftwareLicensingNetworkLicenseDatabase));
}
IЯ пытался решить эту проблему несколькими способами: перейти на .Net 3.5 (я использую .Net 4.0), изменить имена пространств имен, использовать класс с несколькими экземплярами вместо singleton и т. д.
Любая помощь будет искренне признательна!