ファイアウォールCOMライブラリInterop.NetFwTypeLib
を使用してTCP送信のルールを管理するWindowsサービスを作成しました。 2台のマシンの展開では、問題を報告していないが、私は別のコンピュータ上で、最近それをインストールし、例外を受け取る:タイプ 'System .__ ComObject'のCOMオブジェクトをSTAThread属性でキャストできません
Unable to cast COM object of type 'System.__ComObject' to interface type 'NetFwTypeLib.INetFwRule3'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B21563FF-D696-4222-AB46-4E89B73AB34A}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))
この記事を読んで後:
- Exception from HRESULT: 0x80004002 (E_NOINTERFACE)
- Why cannot I cast my COM object to the interface it implements in C#
- InvalidCastException , Exception from HRESULT: 0x80004002 (E_NOINTERFACE)
セット私はこの問題を解決するこれでどうかをテストするには、このコードの主な方法が、任意の解決なしに210:私は驚きました
class Program
{
[STAThread]
static void Main(string[] args)
{
try{
var type = Type.GetTypeFromProgID("HNetCfg.FWRule");
var instance = (INetFwRule3) Activator.CreateInstance(type);
Console.WriteLine("OK");
}
catch (Exception exception){
Console.WriteLine(exception);
}
}
}
は、私は、レジストリのCLSIDを見つけるために、このスクリプトを実行し、戻りません行ってきました
**OS**
Windows Server 2012 R2 Standard
**FirewallAPI.dll file on Windows/system32**
File version: 6.3.9600.17415
Product version: 6.3.9600.17415
Size: 736 kb
Date modified: 4/28/2015 8:51 PM
情報をコンピュータどこから:作品とは動作しません。:
reg query HKCR\CLSID | find /i "{B21563FF-D696-4222-AB46-4E89B73AB34A}"
これらは、サービスが動作するコンピュータからの情報であり、両方のコンピュータ、上の任意の結果サービスに障害が発生した:
**OS**
Windows Server 2011 Service Pack 1
**FirewallAPI.dll file on Windows/system32**
File version: 6.1.7600.16385
Product version: 6.3.7600.16385
Size: 730 kb
Date modified: 7/13/2009 8:51 PM
質問:
を- 問題の原因をFirewallAPI.dllのバージョンの違いになることができますか?
- dllを更新するには十分ですが、レジストリに矛盾があると少し危険ですか?
Windows 8とServer 2012でINetFwRule3インターフェイスが追加されたという単純な説明です。「Windows Server 2011」とは何ができるのでしょうか。確かに1ではありません。INetFwRule2に制限する必要があります。もっと少なく。 Fwiw、HKCR \ CLSIDキーはクラスguidのホームであり、インターフェースのGUIDではありません。 –
あなたのお勧めを試し、INetFwRule2インターフェースのOSの制限を知っていますか? – Joseph
RTFMだけで、インターフェイスのMSDN記事の一番下を見てください。 –