Доступ к пользовательскому провайдеру WMI зависает на неопределенный срок - PullRequest
2 голосов
/ 08 июля 2010

Я пытаюсь написать пользовательский развязанный поставщик 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 и т. д.

Любая помощь будет искренне признательна!

1 Ответ

1 голос
/ 08 июля 2010

Неважно, я понял это:

Ваша Main функция не может иметь STAThread в качестве атрибута.Я добавил это, когда отлаживал что-то, что требовало этого и не снимало это.Он полагает, что мне понадобится так много времени, чтобы придумать что-то такое простое и очевидное, как только вы об этом подумаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...