У меня есть приложение-служба WCF, которое я хочу развернуть с помощью пакета установщика msi. Конечная точка использует http-порт 8888. Чтобы запустить проект под Windows 2008 после установки, я должен либо запустить программу от имени администратора, либо изменить параметры http с помощью netsh:
"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);
}
Этот метод будет работать для английских версий окон, но не для локализованных версий (группа «Все» имеет разные имена в локализованных версиях). Я также пытался использовать Environment.UserName, чтобы разрешить доступ по крайней мере для текущего вошедшего в систему пользователя. Но это также не работает, потому что класс установщика запускается службой msi, которая работает под пользователем SYSTEM. Следовательно, Enviroment.UserName возвращает SYSTEM, а это не то, что я хочу.
Есть ли способ предоставить всем (или хотя бы текущему вошедшему в систему) пользователю доступ к моей собственной службе WCF из класса установщика msi?