Выполнить скрипт Powershell из C # с правами администратора и разрешениями - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу выполнить скрипт Powershell через C # с правами администратора.

Я пытался разными способами, но безрезультатно.

Лучшее, что я могу сделать, - это запустить процесс (System.Diagnostics.Process.Start (p)) с глаголом runas. Таким образом, если пользователь, выполняющий службу, является администратором, я могу запустить сценарий powershell.

Но мне нужно запустить службу с пользователем с низкими привилегиями и, при необходимости, войти в систему с администратором и выполнить скрипт powershell.

Я пытался выдать себя за администратора, но это не сработало ...

Ответ Выполнение PowerShell в качестве администратора из C # не решило проблему, я все еще не могу запустить свой скрипт. Ответы с 2009 года, я надеюсь, что кто-то решил эту проблему в то же время.

        // powershell script execution
        var processInfo = new System.Diagnostics.ProcessStartInfo
        {
            Verb = "runas",
            LoadUserProfile = true,
            FileName = "powershell.exe",
            Arguments = scriptPath,
            RedirectStandardOutput = true,
            UseShellExecute = false
        };

        var p = System.Diagnostics.Process.Start(processInfo);

1 Ответ

0 голосов
/ 10 сентября 2018

Олицетворение должно работать.Тем не менее, я обычно избегаю этого, так как не люблю хранить учетные данные пользователя, если мне не нужно.

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

Мои приложение IIS и служба Windows взаимодействуют по AMQP (с RabbitMQ).Тем не менее, вы можете легко использовать любой канал связи, который вы предпочитаете - HTTP, TCP или даже просто создать файл и заставить приложение администратора искать файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...