Автоматически создавать нового пользователя и использовать в режиме без вывода сообщений для установки службы Windows с помощью установщика Visual Studio - PullRequest
1 голос
/ 06 марта 2009

У меня есть служба Windows, которая устанавливается с помощью установщика Visual Studio (2008). Я хотел избежать запуска в качестве системы, поэтому я вручную 1) создавал новую учетную запись Windows на компьютере и 2) вводил имя компьютера \ имя пользователя и пароль во время установки.

Я бы хотел, чтобы это потребовало небольшого вмешательства пользователя, поэтому я заинтересован в создании нового пользователя Windows и автоматическом предоставлении имени компьютера, имени пользователя и пароля.

Как бы мне этого добиться?

Ответы [ 3 ]

2 голосов
/ 07 марта 2009

взято с этого сайта

Простой ответ - использовать сеть. пользователь / добавить (/ домен), однако возможно автоматизировать не только добавление пользователь, но и его / ее дополнение к группы и создание шаблона структура каталога учетной записи пользователя. Много организации имеют базовую структуру с Word, Excel каталоги и некоторые файлы шаблонов. Это может быть автоматизировано с базовым сценарием. Например

REM addnew.bat

net user %1 password /add /homedir:\\<server>\users\%1 /scriptpath:login.bat /domain
net localgroup "<local group>" %1 /add

REM repeat for local groups
net group "<groups>" %1 /add /domain

REM repeat for global groups
xcopy \\<server>\users\template \\<server>\users\%1 /e
nltest /sync /server:BDCname

REM repeat for all BDCs you might be authenticating to
sleep 20
cacls \\<server>\users\%1 /e /r Everyone

REM remove the everyone permission to the directory
cacls \\<server>\users\%1 /g %1:F /e
cacls \\<server>\users\%1 /g Administrators:F /e
0 голосов
/ 06 марта 2009

Создайте настраиваемое действие в MSI для запуска команды «sc.exe» (которая установлена ​​в WinXP и более новых системах). Если вы обеспокоены тем, что sc.exe может отсутствовать в системе, включите его в MSI, либо в двоичную таблицу, либо установите вместе с продуктом.

После того, как ваш MSI создаст сервис, попросите пользовательское действие выполнить следующее (измените для вашего собственного пользователя / пароль):

sc config the_service_name obj = thedomain \ johndoe пароль = stackoverflow

Тем не менее, обратите внимание, что хранение пароля непосредственно в MSI в открытом виде является ОЧЕНЬ плохой идеей.

Простое (и простое) решение - использовать бесплатный инструмент CPAU для шифрования всей команды sc, указанной выше. Вы должны зашифровать эту команду (используя CPAU) из своей собственной системы, а затем передать эту зашифрованную строку в CPAU (которую вам необходимо будет включить в свой MSI или установить в системе - в своем настраиваемом действии). CPAU декодирует передаваемую вами строку, которая будет декодироваться в приведенной выше команде sc, и будет более надежно устанавливать имя пользователя и пароль в службе.

0 голосов
/ 06 марта 2009

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

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

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

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