【问题标题】:namespace reservations命名空间保留
【发布时间】:2023-09-01 19:42:02
【问题描述】:

我创建了一个独立的 wcf JSON 服务(端口 4326)。在 Windows 7 上,我发现要么我必须以管理员身份运行,要么使用 netsh 作为命令行(只需一次)来解锁端口:

e.g. C:> netsh http add urlacl url=http://+:4326/ user=CSDL-SERVICES\ysg4206 

见:http://msdn.microsoft.com/en-us/library/ms733768.aspx

有没有办法可以在 .NET 应用程序中执行此操作(以便用户在安装程序后不必执行此操作?我可以找到用户帐户,并像 netsh 程序一样永久执行此操作吗?

或者,InstallShield 中是否有某种方法可以找出用户的域/用户名,然后在安装期间将其作为脚本运行?

【问题讨论】:

  • 尽管接受答案的可能性很低,但我还是给出了一些指示。 (InstallShield 标签上的课程标准。)
  • 克里斯,实际上,您已经提供了帮助,只是表明在安装程序中执行此操作可能比在 .NET 应用程序中弄清楚如何执行此操作更简洁、更好。

标签: wcf http installshield


【解决方案1】:

您使用的是什么 InstallShield 版本和项目类型?

如果是 MSI,您可以使用 EXE 自定义操作来运行该命令。另一种选择是调用 LaunchAppAndWait 来调用 EXE 的 InstallScript 自定义操作。 (没有闪烁的 DOS 提示符。)

此外,如果是 MSI,您可以创建一个使用安静执行自定义操作模式或可能使用防火墙扩展的 WiX 合并模块。

FirewallException Element (Firewall Extension)

Quiet Execution Custom Action

Augmenting InstallShield using Windows Installer XML - Certificates

LaunchAppAndWait

Q102426: HOWTO: Launch a Custom Executable

【讨论】:

  • 我正在使用 Spring 2012 PRO。所以我正在查看的是在最后运行一个 Powershell 脚本,它将运行 netsh.exe (powershell 让我可以执行 Get-ChildItem Env:UserName 之类的操作)。现在我只需要弄清楚如何从 PowerShell 脚本中提升到 ADMIN 权限。 (netsh.exe 需要 WIN7 中的管理员)。这有意义吗?
  • 并非如此。 Windows Installer 具有可用于传递的属性,例如 [UserName]。但是您的用户名将是 SYSTEM,因为它是一个提升的自定义操作。您确实希望传递 ServiceInstall 表中使用的属性来创建服务。