Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Необходимо из сервиса запустить интерактивный EXE.   Найти похожие ветки 

 
Still Swamp   (2005-09-16 13:51) [0]

Необходимо из сервиса запустить интерактивный EXE. Я попробовал запустить calc.exe c помощью ShellExecute. Не получилось. Точнее процесс запустился но окошка я не увидел. Как это делается?


 
BiN ©   (2005-09-16 14:28) [1]

Зачем делать дыру в защите?


 
chili   (2005-09-16 14:37) [2]

Still Swamp   (16.09.05 13:51)

function CreateProcessWithLogonW(
 lpUsername,
 lpDomain,
 lpPassword:PWideChar;
 dwLogonFlags:dword;
 lpApplicationName: PWideChar;
 lpCommandLine: PWideChar;
 dwCreationFlags: DWORD;
 lpEnvironment: Pointer;
 lpCurrentDirectory: PWideChar;
 const lpStartupInfo: tSTARTUPINFO;
 var lpProcessInformation: TProcessInformation ): BOOL; stdcall; external "advapi32.dll";

wUsername := "admin";
           wDomain := "";
           wPassword := "test";
           wApplicationName := "calc.exe";
           pwUsername := Addr(wUsername[1]);
           pwDomain := Addr(wDomain[1]);
           pwPassword := Addr(wPassword[1]);
           pwApplicationName := Addr(wApplicationName[1]);
           FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
           StartupInfo.cb := SizeOf(TStartupInfo);
           CreateProcessWithLogonW(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE,
                                  pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,
                                  nil,nil,StartupInfo,ProcessInfo);


 
chili   (2005-09-16 14:39) [3]

Можно еще пробовать запускать через AT с ключем /INTERACTIVE
правде не факт, что будет запущена служба расписаний...


 
kami ©   (2005-09-16 16:10) [4]

//автор -  Набережных С. ©

function ExecuteOnSession(SessionID: DWORD; const AppName: string): THandle;
var
H: THandle;
SI: TStartupInfo;
PI: TProcessInformation;
begin
Result:=0;
if not WTSQueryUserToken(SessionID, H) then Exit;
try
  FillChar(SI, SizeOf(SI), 0);
  SI.cb:=SizeOf(SI);
  if CreateProcessAsUser(H, nil, @AppName[1], nil, nil, false,
                   CREATE_NEW_CONSOLE,  nil, nil, SI, PI) then
  begin
    CloseHandle(PI.hThread);
    Result:=PI.hProcess;
  end;
finally
  CloseHandle(H);
end;
end;

function ExecuteAsIU_XP(const AppName: string): THandle;
var
SessionID: DWORD;
begin
SessionID:=WTSGetActiveConsoleSessionId;
Result:=ExecuteOnSession(SessionID, AppName);
end;


ЗЫ. Проверено автором на XP SP2



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
1-1130307574
DVM
2005-10-26 10:19
2005.11.20
Правильно ли я превел с С на Pascal?


14-1130225479
Антоний
2005-10-25 11:31
2005.11.20
В силу одной из веток ниже...


1-1130499343
Шурик Ш
2005-10-28 15:35
2005.11.20
Вопрос про события TValueListEditor


11-1111951017
DeimosX7
2005-03-27 23:16
2005.11.20
проблема с передачей параметров


10-1108026498
ViktorKR
2005-02-10 12:08
2005.11.20
COM+ авторизация