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

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

CreateProcessWithLogonW [D5, Win2k]


AlexTregubov ©   (2003-09-09 16:07:00) 

Мастера!!! Подскажите, как с этой функцией работать.
Весь день бьюсь с ней и никак не могу одолеть.
Постоянно Access Violation возникает, хотя вроде бы все верно.

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


Игорь Шевченко   (2003-09-09 17:05:00) [1]

И еще: как объявлены переменные strUserName и прочие ?


Игорь Шевченко   (2003-09-09 17:03:00) [2]

И где же наконец, GetLastError ? точно, телепатов ищем :)


clickmaker   (2003-09-09 17:02:00) [3]

Сорри, нужно constlpStartupInfo: STARTUPINFO, а то скорей всего опять AV будет


clickmaker   (2003-09-09 16:57:00) [4]

Правильней так:

function CreateProcessWithLogonW(
const lpUsername: PWideChar; // user"s name
const lpDomain: PWideChar; // user"s domain
const lpPassword: PWideChar; // user"s password
dwLogonFlags: Cardinal; // logon option
const lpApplicationName: PWideChar; // executable module name
lpCommandLine: PWideChar; // command-line string
dwCreationFlags: Cardinal; // creation flags
lpEnvironment: Pointer; // new environment block
const lpCurrentDirectory: PWideChar; // current directory name
lpStartupInfo: TStartupInfo; // startup information
varlpProcessInfo: TProcessInformation // process information
): BOOL; stdcall;


В lpProcessInfo она возвращает инфу о процессе, поэтому var.
Либо и lpStartupInfo и lpProcessInfo обозначить как Pointer и передавать @SInfo и @PInfo


AlexTregubov   (2003-09-09 16:45:00) [5]


unit Win2kUtils;

interface

uses
Windows;

function CreateProcessWithLogonW(
lpUsername: PWideChar; // user"s name
lpDomain: PWideChar; // user"s domain
lpPassword: PWideChar; // user"s password
dwLogonFlags: integer; // logon option
lpApplicationName: PWideChar; // executable module name
lpCommandLine: PWideChar; // command-line string
dwCreationFlags: integer; // creation flags
lpEnvironment: Pointer; // new environment block
lpCurrentDirectory: PWideChar; // current directory name
lpStartupInfo: TStartupInfo; // startup information
lpProcessInfo: TProcessInformation // process information
): boolean; stdcall;

implementation

function CreateProcessWithLogonW; external "Advapi32.dll" name "CreateProcessWithLogonW";

end.


clickmaker   (2003-09-09 16:44:00) [6]

Понятно, что там она есть )
В дельфях она как описана?


AlexTregubov   (2003-09-09 16:41:00) [7]

Она есть в Advapi32.dll

BOOL CreateProcessWithLogonW(
LPCWSTR lpUsername, // user"s name
LPCWSTR lpDomain, // user"s domain
LPCWSTR lpPassword, // user"s password
DWORD dwLogonFlags, // logon option
LPCWSTR lpApplicationName, // executable module name
LPWSTR lpCommandLine, // command-line string
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCWSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFOW lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInfo // process information
);


clickmaker   (2003-09-09 16:38:00) [8]

А как описана функция? В Д5 source ее ведь нет


AlexTregubov   (2003-09-09 16:24:00) [9]

Вот пример


ZeroMemory(@SInfo,SizeOf(SInfo));
SInfo.cb:=SizeOf(SInfo);
ZeroMemory(@PInfo,SizeOf(PInfo));
if not CreateProcessWithLogonW(PWideChar(strUserName),
nil,
PWideChar(strPassword),
0,
PWideChar(strAppName),
nil,
CREATE_DEFAULT_ERROR_MODE or
CREATE_NEW_CONSOLE or
CREATE_NEW_PROCESS_GROUP,
nil,
nil,
SInfo,
Pinfo)
then ShowMessage("Не работает");


clickmaker   (2003-09-09 16:12:00) [10]

Такое впечатление, что тут не форум по дельфи, а конкурс телепатов какой-то...

Хоть бы код публиковали, уважаемые вопрошающие, а ?


Наверх

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