Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как програмно запустить другую программу под другим пользером [D6, D7, NT4, Win2k, WinXP]


Dr. Web ©   (2003-02-10 15:31:00) 

Доброго времени суток, господа!
у меня собственно вопрос из сабжа...
(интересует кусочек кода, который это делает)


bak   (2003-02-13 11:12:00) [1]

подскажите что нить про RtlSetSecurityDescriptorRMControl, плиз... заинтересовался...


Dr. Web   (2003-02-11 15:43:00) [2]

2 bak
в 2000-ной винде все прекрасно работает!
спасибо ;)


bak   (2003-02-11 09:31:00) [3]

попробовал тока что загрузить CreateProcessWithLogonW динамически. Ага, не все так просто... Под нтями прога запросила функцию со страшным названием RtlSetSecurityDescriptorRMControl, которая должна бы находиться в ntdll.dll... Искал ее описание в инете - ничАго не нашел... :(


bak   (2003-02-11 09:10:00) [4]

под nt катит LogonUser и CreateProcessAsUser, да и то только под LocalSystem


ZZ   (2003-02-11 01:15:00) [5]

Почему не будет??


Игорь Шевченко   (2003-02-10 17:12:00) [6]

И не будет пахать...Читай внимательно описание функции.


bak   (2003-02-10 17:10:00) [7]

function CreateProcessWithLogonW(
lpUsername : PWChar;
lpDomain : PWChar;
lpPassword : PWChar;
dwLogonFlags : DWord;
lpApplicationName : PWChar;
lpCommandLine : PWChar;
dwCreationFlags : DWord;
lpEnvironment : Pointer;
lpCurrentDirectory : PWChar;
var lpStartupInfo : TStartupInfo;
var lpProcessInfo : TProcessInformation
) : Bool; stdcall; external "AdvApi32.dll";



procedure TForm1.Button1Click(Sender: TObject);
var
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
if CreateProcessWithLogonW("administrator", "domain_mmpt", "forgivenforget",
0, "notepad.exe", "", CREATE_DEFAULT_ERROR_MODE, nil, nil,
StartupInfo, ProcessInfo) then begin
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread)
end else
Win32Check(False)
end;

не пашет под nt


ZZ   (2003-02-10 16:46:00) [8]

CreateProcessWithLogonW (W2000/XP) аналог CreateProcess
ЗЫ. Пароль ты конечно знаешь...


Игорь Шевченко   (2003-02-10 16:24:00) [9]

Трудно...


Наверх

Титульная страница Поиск, карта сайта Написать письмо