![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||