2012-01-22 3 views
0

Мне нужно программно создать новую учетную запись Windows для запуска службы Windows, которую я недавно разработал.Как создать учетную запись службы Windows программно

Из-за отсутствия достаточных привилегий я не могу использовать ни одну из существующих учетных записей службы (LocalService, NetworkService и LocalSystem), поэтому мне нужно создать свою собственную учетную запись во время установки моего сервиса.

К сожалению, я не знаю, как это сделать из кода (C#). Тем не менее, я знаю, что шаги, которые я должен пройти, включают:

  • Создать учетную запись
  • Запретить счет войти на консоль с помощью
  • Grant войти в качестве службы.
  • Добавьте учетную запись в группу локальных администраторов на компьютере

Моя служба должна установить и запустить на всех операционных системах Windows, ПК, начиная от Windows XP SP3 и выше.

Вопрос: Какие средства командной строки доступны для этой цели (я очень хорошо могу назвать эти инструменты командной строки из кода)?

Кроме того, любые важные ссылки, фрагменты кода или скрипты будут очень благодарны!

+0

может быть стоит добавить «окна 'перед «служебной учетной записью» в заголовок. ;) – leonigmig

+0

Хорошее предложение, теперь сделано! –

+0

Ну, API Win32 [NetUserAdd] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370649%28v=vs.85%29.aspx) (для создания учетной записи) и [LsaAddAccountRights] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms721786%28v=vs.85%29.aspx) (для предоставления привилегий учетной записи). Не знаю, что такое управляемые API, но, возможно, Google может помочь. – Luke

ответ

0

Если вы просто хотите одну команду, вероятно, можно сделать следующее:

net user /ADD "newuser" "Pass phrase" /passwordchg:no

Однако я заглянул в «грантовой входа в систему в качестве службы» в прошлом, и пришлось скачать дополнительный exe-файл из Windows Server Resource Pack для этого. Это может быть боль, поскольку вам нужно будет перераспределить файл .exe.

Если кто-то предлагает лучший способ, который использует только встроенный в .exes я бы попытаться сделать это с одним из:

  • Powershell
  • VBscript
+0

Хорошо, похоже, что я немного погружен в глубокую воду. Может быть, мне следует рассмотреть совершенно другой подход, но я действительно не знаю, какие у меня варианты? Основная проблема, которую я пытаюсь решить, объясняется в другом вопросе, который я опубликовал несколько дней назад (поиск «Какая учетная запись службы подходит»). –

+0

Если честно, если в комментарии Люка есть API-интерфейсы C# для этого, это может быть вашим лучшим выбором. – leonigmig

Смежные вопросы