我有一个安装程序,用于安装oracle XE数据库。最近,我被要求在安装过程中以编程方式关闭/阻止端口1521。我的应用程序是使用Wix 3.8安装的。我看过Wix防火墙扩展,但我看不到指定操作(即"阻止")的方法。我想阻止该端口上的所有传入流量,从而有效地关闭侦听器。
有没有其他方法可以做到这一点,或者我错过了Wix的一些东西?
如果Wix扩展不支持此功能(这会让我感到惊讶),也许您可以尝试此VBScript。
请注意,我没有写这个脚本,也没有使用过。请谨慎使用,风险自负。在虚拟机上测试。
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colPorts = objPolicy.GloballyOpenPorts
Set objPort = colPorts.Item(9999,6)
objPort.Enabled = FALSE
类似的代码,但使用C#:使用自动化Windows防火墙
更新:我们无法让WiX安装程序执行我们想要的操作,所以我们编写了自己的自定义流程(而不是CustomAction),运行安装后。
三个主要步骤是:
- 通过添加以下行,将sqlnet.ora(\database\app\oracle\product\\server\NETWORK\ADMIN\sqlnet.ora)文件配置为仅允许从本地主机进行连接:
> TCP.VALIDNODE_CHECKING=YES > TCP.INVITED_NODES = 127.0.0.1
- 通过运行以下sqlplus命令,仅为本地访问设置TNSListener:
> exec DBMS_XDB.SETLISTENERLOCALACCESS(true); > SHUTDOWN IMMEDIATE > STARTUP
- 停止OracleXETNSListener服务并将其禁用(自定义VB.net代码)
希望这能有所帮助!