Форум: "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