У меня есть самозанятое приложение службы WCF, которое я хочу развернуть с помощью установочного пакета msi. Конечная точка использует http-порт 8888. Чтобы запустить проект под окнами 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, которая работает под пользовательской системой. Следовательно, Enviroment.UserName возвращает SYSTEM, и это не то, что я хочу.
Есть ли способ предоставить доступ ко всем (или, по крайней мере, для текущего пользователя), к моей самоходной службе WCF из класса установщика msi?