Я пытаюсь, чтобы служба, работающая на Windows Server 2008 R2, могла выполнять dcpromo для присоединения и удаления AD. В Server 2003 я мог просто использовать Process.Start () в C # и указать путь к dcpromo и путь к файлу ответов, предоставленному пользователем.
Однако в Server 2008 это возвращает FileNotFoundException. Я проверил путь к dcpromo и даже попытался запустить другие исполняемые файлы в папке System32, такие как ipconfig и whoami, которые отлично работают.
Служба работает как учетная запись локальной системы, и я нашел единственный способ заставить ее работать - это сохранить команду в пакетном файле и выдать себя за администратора для его выполнения. Но у этого есть своя проблема, например, требуется пароль администратора.
Согласно разрешениям на dcpromo.exe, учетная запись SYSTEM имеет разрешения на чтение / выполнение, и я попытался предоставить полные разрешения и сменил владельца на SYSTEM, но ничего из этого не помогло. Тот же код работает, если пользователь запускает его как обычное приложение (т.е. не сервис).
Есть идеи, как предоставить системной учетной записи разрешения на выполнение dcpromo во время работы со службой в Server 2008 R2?
Можете ли вы изменить службу для запуска от имени пользователя вместо системной учетной записи?
У меня возникла эта проблема, и я понял, что DCPromo - это 64-разрядный процесс, и у вас, вероятно, есть Visual Studio для создания приложений x32. Ну, я изменил VS на 64-битную компиляцию, и это сработало как чемпион!
Карлос