Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

Необходимо из сервиса запустить интерактивный 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.044 c
2-1131200278
Dot
2005-11-05 17:17
2005.11.20
Поиск файлов


11-1111916035
RadaR
2005-03-27 13:33
2005.11.20
UNICODE


2-1130435828
Yus
2005-10-27 21:57
2005.11.20
Классы


14-1130658164
SPeller
2005-10-30 10:42
2005.11.20
Бред?


14-1130307967
stone
2005-10-26 10:26
2005.11.20
Всех москвичей с первым снегом!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский