Windows Server 2012上INetFwMgr的问题

时间:2013-02-18 18:23:38

标签: .net com com-interop windows-firewall windows-server-2012

使用以下代码适用于我测试的每个操作系统,但我的Windows Server 2012计算机除外:

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在服务器上构建了互操作程序集。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

原来问题是找不到我定位的防火墙规则。我所追求的特定规则是由我使用的服务器创建的。当我删除该规则并手动重新创建时,事情开始起作用。

FileNotFoundException使我相信操作系统的内容中缺少某些内容。