Главная страница
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.056 c
3-1128578227
jiny
2005-10-06 09:57
2005.11.20
Пробл. с объединением 4 таблиц


8-1119617498
MixAnOL
2005-06-24 16:51
2005.11.20
Проигрывание музыки другим приложением


2-1131193537
JBL
2005-11-05 15:25
2005.11.20
Rave Reports


2-1130746379
syte_ser78
2005-10-31 11:12
2005.11.20
как подключить dll?


5-1111501905
DmitryS
2005-03-22 17:31
2005.11.20
TListView & TTreeView