Запуск службы от имени пользователя без пароля
-
02-07-2019 - |
Вопрос
Я пытаюсь запустить службу от имени пользователя, и все работает нормально, пока я не попробую использовать пользователя, у которого нет пароля.Затем он не запускается (из-за ошибки входа в систему).
Я делаю что-то не так или это "специально"?
Код для регистрации этой услуги:
SC_HANDLE schService = CreateService(
schSCManager,
strNameNoSpaces,
strServiceName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
szPath,
NULL,
NULL,
NULL,
strUser,
(strPassword.IsEmpty())?NULL:strPassword);
Решение
Это может быть связано с требованиями безопасности операционной системы или политикой безопасности.Проверьте политики безопасности, чтобы узнать, имеет ли там какое-либо отношение к делу.
Другие советы
Да, это действительно было связано с политикой безопасности.Разработать:
http://technet.microsoft.com/en-us/library/bb457114.aspx
"Если вы хотите отключить ограничение на вход в сеть без пароля, вы можете сделать это с помощью Локальной политики безопасности.Параметр политики, управляющий ограничением пустого пароля, можно изменить с помощью оснасток Локальной политики безопасности или групповой политики MMC.Вы можете использовать любой инструмент, чтобы найти этот параметр политики по адресу Настройки безопасности \Локальные политики\ Параметры безопасности.Название политики - Учетные записи: Ограничьте использование пустых паролей локальной учетной записью только для входа в систему с консоли.Он включен по умолчанию ".
После отключения этого все работает нормально.
Вам нужно указать пустую строку, а не NULL, если нет пароля.NULL не является допустимой пустой строкой", " есть.Вероятно, вам следует просто пройти мимо strPassword
для последнего параметра.
SC_HANDLE schService = CreateService(
schSCManager,
strNameNoSpaces,
strServiceName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
szPath,
NULL,
NULL,
NULL,
strUser,
// change this line to:
strPassword.IsEmpty() ? L"" : strPassword);
// or maybe
strPassword);
Спасибо - вообще-то, я пробовал это первым, но безрезультатно.
Если я запускаю services.msc, вручную захожу в свойства сервиса и очищаю 2 поля пароля, затем нажимаю "Применить" и пытаюсь запустить его, это также не удается.