Уважаемые профи, как осуществить программный запуск/установка службы под пользователем. В коде прописано так, но пользователь оказывается "система":
Код:
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;
Админ: пользуемся тегами! При рецедиве последуют санкции!