问题描述
|
我们正在开发一个监听某些端口的应用程序。我们确实想避免使用适当的安装程序,因此我们当时无法打开防火墙。
第一次运行该应用程序时,Windows会弹出一个对话框,询问用户权限。在这一点上,我们希望延迟执行,直到用户单击“是”(就此而言为“否”)为止。
目前,我们使用类似:
while(FindWindow(\"Windows Security Alert\")) {
Sleep(1000);
}
..这是可行的,但并非一成不变。据我所知,防火墙api不提供此信息。
奖励问题:还有没有一种方法可以检测用户单击是还是否?
解决方法
在这里,您可以在C#代码中找到一些有关如何自行打开Filewall端口的代码,网址为http://www.shafqatahmed.com/2008/01/controlling-win.html
当然,您的应用程序必须处于提升运行状态才能执行此操作。
网络上也有几个提供此功能的安装程序。例如(不幸的是,它不是开源的):uTorrent的安装程序。