Как вызовать окно «Войти как свойства услуги» программно?

StackOverflow https://stackoverflow.com/questions/8324684

Вопрос

Как вызовать окно «Войти как свойства службы» программно? Могу ли я сделать это с помощью командной строки и MMC?

Это было полезно?

Решение

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

SvcMgr := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SvcMgr=0 then begin
  RaiseLastOSError;//calls GetLastError and raises appropriate exception 
end;
Try
  //Name is the name of service and is used here to identify the service
  hService := OpenService(SvcMgr, PChar(Name), SC_MANAGER_ALL_ACCESS);
  if hService=0 then begin
    RaiseLastOSError;
  end;
  Try
    if not ChangeServiceConfig(
      hService,
      SERVICE_NO_CHANGE,
      SERVICE_NO_CHANGE,
      SERVICE_NO_CHANGE,
      nil,
      nil,
      nil,
      nil,
      PChar(Username),//PChar just turns a Delphi string into a null-terminated string
      PChar(Password),
      nil
    ) then begin
      RaiseLastOSError;
    end;
    if not ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, @ServiceDescription) then begin
      RaiseLastOSError;
    end;
  Finally
    CloseServiceHandle(hService);
  End;
Finally
  CloseServiceHandle(SvcMgr);
End;

Я не уверен, как вы регистрируете свой сервис (вы еще не сказали), но вполне возможно, что регистрация услуг, которую вы делаете, уже способна установить имя пользователя и пароль.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top