【发布时间】: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)、更改命名空间名称、使用多实例类而不是单例等等。
任何帮助将不胜感激!
【问题讨论】: