在.NET应用程序中,如何识别用于与给定IP地址通信的网络接口?
我在具有多个网络接口,IPv4和v6的工作站上运行,我需要获取用于流量到我给定数据库服务器的"正确"接口的地址.
.NET中是否有任何库允许我在Windows 7中操作具有高级安全性的Windows防火墙?
我问这个的原因是因为,我希望能够以编程方式添加程序/端口异常.
例如,我想将program.exe添加到入站规则部分,对于此程序,我想允许TCP端口5660和UDP端口5660.应该仅为此程序阻止所有其他端口;
我推断这可以在具有高级安全性的Windows防火墙的入站规则部分中轻松设置; 我希望这是最好的方式吗?
但是,我将如何以编程方式完成该操作?
我已经在这里看到了一个例子,但我认为这个问题谈到了"允许程序通过Windows防火墙管理单元",它没有端口信息.
我需要为我的应用程序打开特定端口.
我已尝试INetFwAuthorizedApplication为所有端口使用每个应用程序的规则.
fwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app)
Run Code Online (Sandbox Code Playgroud)
或者,为所有应用程序打开一个端口INetFwOpenPort.
firewallManager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port)
Run Code Online (Sandbox Code Playgroud)
有没有办法以编程方式以编程方式为每个应用程序打开单个端口?我可以通过防火墙设置手动完成.
我有一个简单的Web套接字服务器应用程序(SuperWebSocket),我用它来与JavaScript通信.这里的想法是允许本地应用程序与浏览器通信.我正在为Windows 7和8平台开发此应用程序.
我遇到的问题是,在初始运行期间,Windows防火墙会显示用于阻止与公共域通信的安全警报.我的应用程序不与PC外部的任何资源通信,因此无论我们选择解除阻止还是阻止,应用程序都可以正常工作.
我的问题是,我们能以编程方式避免这种安全警告吗?如果PC不允许防火墙访问,是否可以允许它以静默方式阻止它而不会弹出任何警告?
我正在使用WiX安装程序创建一个MSI包,用于分发应用程序.我们有什么办法可以在安装时设置防火墙权限吗?
基本思想是允许程序以最少的用户交互运行.
提前致谢.
更新:
似乎问题出现在SuperWebSocket中,它将套接字绑定到所有可用接口.类似的东西,
TcpListener _listener = new TcpListener(IPAddress.Any, 21000);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用这样的东西,
TcpListener _listener = new TcpListener(IPAddress.Loopback, 21000);
Run Code Online (Sandbox Code Playgroud)
该警告不再出现.我在Windows 8 PC上测试了这个.
我需要在 Windows 防火墙中拒绝访问大约 50,000 个 IP 地址;netsh advfirewall只允许我添加大约700。这如何实现?
c# ×4
firewall ×3
.net ×1
api ×1
networking ×1
port ×1
tcplistener ×1
websocket ×1
windows ×1
windows-7 ×1