Как и просили в комментариях, у меня есть очень простой код, который установит имя пользователя и пароль уже зарегистрированного сервиса.Естественно, это необходимо сделать во время установки службы, когда у вас есть повышенные права.Код написан на Delphi, но портирование его на другой язык должно быть тривиальным.Все вызовы функций - это вызовы API Windows, а документацию можно найти в 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
во время установки, то это точка, в которой имя пользователя и пароль должныустановлен.