0

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

有人可以帮忙吗?

4

1 回答 1

0

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

FileNotFoundException 让我相信操作系统的内部缺少某些东西。

于 2013-02-18T18:58:31.390 回答