2012-11-22 47 views
0

我创建了一个独立的wcf JSON服务(端口4326)。在Windows 7中,我发现,无论我作为管理员身份运行,或使用netsh作为命令行(只有一次),以解除端口:namespace reservations

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中有一些方法可以找出用户的域名/用户名,然后在安装过程中将其作为脚本运行?

+0

我给了一些三分球,尽管公认的答案的概率很低。 (参考InstallShield标签上的课程) –

+0

Chris,实际上,您已经帮助过了,只是指出在intaller中这样做可能更清晰,更好,而不是在.NET应用程序中弄清楚如何实现。 –

回答

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

+0

我正在使用Spring 2012 PRO。所以我所看到的是在运行netsh.exe的末尾运行Powershell脚本(powershell让我执行诸如Get-ChildItem Env:UserName之类的操作)。现在我只需要知道如何从PowerShell脚本中提升ADMIN特权。 (netsh.exe需要WIN7中的管理员)。这有意义吗? –

+0

不是。 Windows Installer具有可用于传递的属性,例如[UserName]。但是,您的用户名将是SYSTEM,因为这是一个提升的自定义操作。你真的想传递在ServiceInstall表中使用的属性来创建服务。 –