Добавьте порты с netsh в WCF как администратор домена без прав администратора - PullRequest
5 голосов
/ 11 января 2012

У меня есть служба с WCF в приложении WPF (самостоятельно размещенная), и у меня типичная ошибка: «У вашего процесса нет прав доступа к этому пространству имен». Пользователи не могут иметь права администратора, поэтому использование .manifest не является решением. Порты динамические, приложение каждый раз вычисляет свободный порт, поэтому приложение должно несколько раз вставить порт прослушивания с помощью netsh Я использую ProcessStartInfo с администратором домена, но для запуска процесса пользователю необходимы права администратора. Запуск приложения от имени администратора также не является решением, поэтому мне нужно, чтобы обычный пользователь мог запустить приложение и программа добавила порт с помощью netsh в качестве администратора домена.

Мой процесс выглядит примерно так:

    ProcessStartInfo psi = new ProcessStartInfo("netsh", parameter);
        SecureString ss = new SecureString();

            for (int i = 0; i < adminPass.Length; i++)
                ss.AppendChar(adminPass[i]);

            psi.Password = ss;
            psi.UserName = Admin;
            psi.Domain = Domain;
            psi.Verb = "runas";
            psi.RedirectStandardOutput = false;
            psi.CreateNoWindow = true;
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            psi.UseShellExecute = false;
            Process.Start(psi);

Большое спасибо

1 Ответ

1 голос
/ 11 января 2012

Посмотрите на принятый ответ на этот вопрос о переполнении стека для возможного решения вашей проблемы.Подход, изложенный в ответе, заключается в выделении кода, требующего администратора, в службу Windows, которая при вызове выполняет операции с повышенными привилегиями под соответствующей (отдельной) учетной записью.

...