使用以下代码适用于我测试的每个操作系统,但我的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在服务器上构建了互操作程序集。
有人可以帮忙吗?
答案 0 :(得分:0)
原来问题是找不到我定位的防火墙规则。我所追求的特定规则是由我使用的服务器创建的。当我删除该规则并手动重新创建时,事情开始起作用。
FileNotFoundException使我相信操作系统的内容中缺少某些内容。