|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Программный запуск/установка службы под пользователем Уважаемые профи, как осуществить программный запуск/установка службы под пользователем. В коде прописано так, но пользователь оказывается "система": Код: function TConsultantUpdate.ExecAndWait(const FileName,Params:String;const WinState: Word):integer; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: String;
  res:boolean;
  ExitCode: Cardinal;
   hUserToken: DWORD;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
    begin
      cb := SizeOf(StartInfo);
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := WinState;
    end;
if not LogonUser(Pchar('lukianov'), Pchar('elcode.local'), Pchar('lukianov'), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hUserToken)   then RaiseLastOSError;
ServiceStartName:='lukianov'; Password:='lukianov';
 end;Последний раз редактировалось Admin, 11.09.2015 в 19:46. | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   У службы в списке свойств есть свойство для указания пользователя, под которым надо ее ставить. Надо заполнять его. А уж стартует она под тем пользователем, под которым зарегистрированна. Ну или ставь ее сам на API без использования дельфовых оберток, тогда можно указать под кем запускать. См. тут: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx | 
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
|  
Mishko (14.09.2015)
 | ||