2008-09-24 5 views
2

Я пытаюсь запустить службу как пользователь, и все работает нормально, пока я не попробую пользователя, у которого нет пароля. Затем он не запускается (из-за ошибки входа).Запуск службы как пользователя без пароля

Я делаю что-то неправильно или это «по дизайну»?

Код для регистрации этой услуги:

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); 

ответ

2

Возможно, это связано с требованиями безопасности ОС или политикой безопасности. Проверьте политики безопасности, чтобы убедиться, что там что-то имеет значение.

+0

Это в значительной степени установка vanilla XP. Я быстро взглянул на политику, но не нашел ничего подходящего, по крайней мере, я не заметил ничего общего с услугами и входами и паролями. – dennisV 2008-09-25 00:49:14

0

Вы должны указать пустую строку, а не 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); 
+0

Спасибо - он не работает, даже если я запускаю сервис вручную. Может, что-то еще что-то не так? – dennisV 2008-09-25 00:18:33

0

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

Если я запустил services.msc, вручную войдите в свойства сервиса и очистите 2 поля пароля, затем нажмите «Применить» и попытайтесь запустить его, он также не работает.

2

Да, это действительно связано с политикой безопасности. Выработать:

http://technet.microsoft.com/en-us/library/bb457114.aspx

«Если вы хотите, чтобы отключить ограничение против входа в сеть без пароля, вы можете сделать это с помощью локальной политики безопасности параметр политики, который управляет пустым ограничением пароля может быть изменен. используя оснастки «Локальная политика безопасности» или «Групповая политика» MMC. Вы можете использовать любой инструмент, чтобы найти этот параметр политики: Параметры безопасности \ Локальные политики \ Параметры безопасности. Имя политики: Учетные записи: Ограничение использования локальной учетной записи пустым пароли только для входа в консоль. Он включен по умолчанию. "

После отключения этого все работает нормально.