2010-07-08 45 views
2

我想在C#中編寫自定義分離WMI提供程序。我遵循這些示例,但是每當我嘗試從WMI Studio或PowerShell訪問WMI類,或者通過wmic訪問我的WMI類時,它都會無限期地掛在那裏,直到我終止提供程序主機應用程序,此時出現錯誤範圍從「無效的類」到「遠程過程調用失敗」。訪問自定義WMI提供程序無限期掛起

如果我不試圖實際訪問它的一個實例,我可以看到我的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)); 


    } 

我已經試過任何數量的東西來診斷這個問題:開關.Net 3.5(我正在使用.Net 4.0),更改命名空間名稱,使用多實例類而不是單例,等等。

任何幫助都會是sincerel Ÿ讚賞!

回答

1

沒關係,我想通了:

Main功能不能STAThread爲屬性。當我調試需要它的東西時,我添加了它,並沒有把它關掉。它認爲,一旦你想到這件事,想要找出那麼簡單明顯的事情需要我很長時間。