【问题标题】:Accessing custom WMI provider hangs indefinitely访问自定义 WMI 提供程序无限期挂起
【发布时间】:2011-03-13 05:05:21
【问题描述】:

我正在尝试用 C# 编写自定义解耦 WMI 提供程序。我已经按照这些示例进行了操作,但每当我尝试从 WMI Studio、PowerShell 或 wmic 访问我的 WMI 类时,它都会无限期地挂在那里,直到我终止提供程序主机应用程序,此时点我得到一个从“无效类”到“远程过程调用失败”的错误。

如果我不尝试实际访问它的实例,我可以很好地查看我的 WMI 提供程序,因此我知道它正在向 WMI 注册。

这是我正在运行的代码:

[程序集:WmiConfiguration(@"root\CIMV2", HostingModel=ManagementHostingModel.Decoupled)] [运行安装程序(真)] 公共类 WmiInstaller : DefaultManagementInstaller { } [ManagementEntity(Singleton=true)] [ManagementQualifier("Description", Value="访问和操作 SLN 许可证数据库中的许可证。")] 公共类 SoftwareLicensingNetworkLicenseDatabase { [管理绑定] 公共 SoftwareLicensingNetworkLicenseDatabase() { Test = "OMG!"; } [管理探针] 公共字符串测试; }

然后在我的 main 函数中:

[STA线程] 静态无效 Main() { InstrumentationManager.RegisterType(typeof(SoftwareLicensingNetworkLicenseDatabase)); Console.ReadLine(); InstrumentationManager.UnregisterType(typeof(SoftwareLicensingNetworkLicenseDatabase)); }

我尝试了很多方法来诊断这个问题:切换到 .Net 3.5(我正在使用 .Net 4.0)、更改命名空间名称、使用多实例类而不是单例等等。

任何帮助将不胜感激!

【问题讨论】:

    标签: c# wmi


    【解决方案1】:

    没关系,我想通了:

    您的Main 函数不能STAThread 作为属性。我在调试需要它但没有删除它的东西时添加了它。它认为我需要很长时间才能弄清楚如此简单明了的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多