0

次のコードを使用すると、Windows Server 2012 マシンを除いて、テストしたすべての OS で動作します。

public static Type FwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr");

public static void Main()
{
  var fwMgr = (INetFwMgr) Activator.CreateInstance(FwMgrType);

  var ssh = fwMgr.LocalPolicy.CurrentProfile.GloballyOpenPorts.Item(22, 
      NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP); // throws FileNotFoundException

  ssh.RemoteAddresses = "123.234.123.235";
}

ssh変数を作成する行はスローしています:

システムは、指定されたファイルを見つけることができません。(HRESULT からの例外: 0x80070002)

どのファイルが見つからないのかわかりません。マシン上に FirewallAPI.dll が存在します。tlbimp.exe を使用して、サーバー上に相互運用機能アセンブリも構築しました。

誰か助けてくれませんか?

4

1 に答える 1

0

問題は、対象としていたファイアウォール ルールが見つからなかったことであることがわかりました。私が求めていた特定のルールは、私が使用しているサーバーによって作成されました。そのルールを削除して手動で再作成すると、機能し始めました。

FileNotFoundException は、オペレーティング システムの根幹に何かが欠けていると私に信じ込ませました。

于 2013-02-18T18:58:31.390 に答える