netsh acl设置(需要替代方法 - 注册表设置?)

时间:2012-12-19 19:11:47

标签: powershell registry inno-setup acl netsh

我使用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

3 个答案:

答案 0 :(得分:0)

我认为您可以在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\

中找到防火墙规则

建议: 也许您可以将此密钥导出为.reg并将其导入其他工作站。

答案 1 :(得分:0)

而不是使用netsh,而是使用WinApi HttpSetServiceConfiguration。在给定正确的原型声明的情况下,您可以直接从Inno的[Code](具体地,在CurStepChanged(ssPostInstall))中调用此(及其相关函数)。请参阅帮助文件中的Using DLLs主题。

答案 2 :(得分:0)

有关此问题的延续,请参阅running netsh.exe as a post-install in inno-setup。但基本上,jachguate将netsh.exe作为安装后运行的答案似乎是正确的方法。