2

我正在使用 inno-setup 安装一个程序,该程序需要在 Win7 上解锁端口 4326(允许 acl 访问),以便可以通过 HTTP 对端口 4326 进行 GET 操作。

我有一个管理员可以运行的 powershell 脚本来解除对端口的阻塞。但这不能用作 inno-setup [run] 命令(因为本地计算机通常会禁用脚本运行)。(即 powershell.exe -nowait & script.ps1)

我可以设置目标机器中的一些注册表项来解除对端口的阻塞吗?由于 setup.exe 以管理员身份运行,因此我可以在 inno-setup 中轻松完成。我猜一个独立的EXE可以做同样的事情。

这是我想用在 HKLM 中设置注册表设置来替换的脚本。

set-alias netsh c:\Windows\System32\netsh.exe
$PORT = 4326
$domain = $Env:userdomain
$name = $Env:username
$ErrorActionPreference = "Continue";

netsh http delete urlacl url=http://*:$PORT/
netsh http add urlacl url=http://*:$PORT/ user=$domain\$name
4

3 回答 3

0

我想你可以找到防火墙规则HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\

建议:也许您可以将此密钥导出为 .reg 并将其导入另一个站。

于 2012-12-19T20:38:02.657 回答
0

而不是使用netsh,而是使用 WinApi HttpSetServiceConfiguration。给定正确的原型声明,您可以直接从 Inno [Code](特别是 in )调用它(及其相关函数) 。CurStepChanged(ssPostInstall)请参阅帮助文件中的使用 DLL主题。

于 2012-12-21T08:28:04.050 回答
0

有关此问题的继续,请参阅在 inno-setup 中将 netsh.exe 作为安装后运行。但我基本上,jachguate 的运行 netsh.exe 作为安装后的答案似乎是正确的方法。

于 2012-12-24T19:10:19.847 回答