我有一个自托管的 WCF 服务应用程序,我想通过 msi 安装程序包部署它。端点使用 http 端口 8888。为了在安装后在 windows 2008 下启动项目,我必须以管理员身份运行程序或必须使用 netsh 编辑 http 设置:
"netsh http add urlacl url=http://+:8888/ user=\Everyone"
我想从我的安装程序类中编辑 http 设置。因此,我从 Install() 方法中调用以下方法:
public void ModifyHttpSettings()
{
string parameter = @"http add urlacl url=http://+:8888/ user=\Everyone";
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo("netsh", parameter);
psi.Verb = "runas";
psi.RedirectStandardOutput = false;
psi.CreateNoWindow = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
System.Diagnostics.Process.Start(psi);
}
此方法适用于英文版的 windows,但不适用于本地化版本(本地化版本中,Everyone 组有不同的名称)。我还尝试使用 Environment.UserName 至少允许当前登录的用户访问。但这也不起作用,因为安装程序类是由在用户 SYSTEM 下运行的 msi 服务运行的。因此 Enviroment.UserName 返回 SYSTEM ,这不是我想要的。
有没有办法从 msi 安装程序类授予所有(或至少当前登录的)用户对我的自托管 WCF 服务的访问权限?