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

Вниз

Не работает CreateteProcessAsUser....   Найти похожие ветки 

 
Yuri Btr ©   (2002-08-20 17:50) [0]

Ув. мастера, помогите разобраться, есть такая процедура:

var
startup:_STARTUPINFOA;
user:cardinal;
path:string;
begin
if LogonUser(Pchar("username"),nil,Pchar("password"), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, user)=false
then
Exit;
Path:="C:\Windows\System32";
ZeroMemory(@startup,sizeof(startup));
startup.cb:=SizeOf(startup);
if not CreateProcessAsUser(user,Pchar(path+"\mmc.exe"),Pchar(path+"\compmgmt.msc"), nil, nil, false, CREATE_DEFAULT_ERROR_MODE, nil, nil, startup, nil)
then
exit;
end;

При компиляции ругается на CreateProcessAsUser пишет что
"Types of actual and formal var parameters must be identical"
но я проверил все переменные, все форматы совпадают... где загвоздка???

Заранее спасибо.


 
Игорь Шевченко ©   (2002-08-20 18:10) [1]

Приведи прототип CreateProcessAsUser


 
ZZ ©   (2002-08-20 18:23) [2]

чего то я сомневаюсь, что последним параметром можно передать nil


 
Игорь Шевченко ©   (2002-08-20 18:27) [3]

И впрямь, нельзя


 
Ученик ©   (2002-08-20 18:47) [4]

С CreateProcessAsUser будет много проблем, поэтому лучше использовать:

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.Button5Click(Sender: TObject);
var
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
if CreateProcessWithLogonW("UserName", "DomainName", "Password",
0, "notepad.exe", "", CREATE_DEFAULT_ERROR_MODE, nil, nil,
StartupInfo, ProcessInfo) then begin
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread)
end else
Win32Check(False)
end;


 
Yuri Btr ©   (2002-08-21 09:45) [5]

to Игорь Шевченко ©
Простите, что вы подразумеваете под словом прототип CreateProcessAsUser???

to Ученик ©
Спасибо вам огромное, что то я сразу несообразил про CreateProcessWithLogonW.

Спасибо всем надо помучать lpProcessInformation - наверно в нем загвоздка..




 
Игорь Шевченко ©   (2002-08-21 11:56) [6]

Под прототипом я понимаю объявление этой функции в windows.pas

function CreateProcessAsUserA(hToken: THandle; lpApplicationName: PAnsiChar;
lpCommandLine: PAnsiChar; lpProcessAttributes: PSecurityAttributes;
lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL;
dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PAnsiChar;
const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall;



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
1-20991
AlekseyK
2002-09-24 17:20
2002.10.07
Как вставить строку сместив другую вниз?


3-20920
BCPP_Builder_Dev
2002-09-17 11:41
2002.10.07
Коллеги! Помогите разобраться с сортировкой, вопрос банальный!!!


1-21088
France
2002-09-25 09:46
2002.10.07
Перемещение окна за заголовок


14-21192
VladD2
2002-09-10 20:44
2002.10.07
Темы для статей по Дельфи!


1-21005
Conqueror
2002-09-26 09:01
2002.10.07
Как