1
unit main;
2
3
interface
4
5
uses
6
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
7
Dialogs,StdCtrls;
8
const
9
LOGON_WITH_PROFILE = 1;
10
LOGON_NETCREDENTIALS_ONLY = 2;
11
function CreateProcessWithLogon(lpUsername: PWChar;lpDomain: PWChar;lpPassword: PWChar;dwLogonFlags: DWORD;lpApplicationName: PWChar;lpCommandLine: PWChar;dwCreationFlags: DWORD;lpEnvironment: Pointer;lpCurrentDirectory: PWChar;const lpStartupInfo: TStartupInfo;var lpProcessInfo: TProcessInformation):BOOL;stdcall;
12
13
type
14
TForm1 = class(TForm)
15
Button1: TButton;
16
procedure Button1Click(Sender: TObject);
17
private
18
{ Private declarations }
19
public
20
{ Public declarations }
21
end;
22
23
var
24
Form1: TForm1;
25
26
implementation
27
28
{$R *.dfm}
29
function CreateProcessWithLogon;external advapi32 name 'CreateProcessWithLogonW';
30
procedure TForm1.Button1Click(Sender: TObject);
31
var
32
wUsername,wDomain,wPassword,wApplicationName:WideString;
33
pwUsername,pwDomain,pwPassword,pwApplicationName:PWideChar;
34
StartupInfo:TStartupInfo;
35
ProcessInfo:TProcessInformation;
36
begin
37
wUsername:='administrtor ';
38
wDomain:='';
39
wPassword:='wskitxgurhkpgf';
40
wApplicationName:='cmd.exe';
41
pwUsername:=Addr(wUsername[1]);
42
pwDomain:=Addr(wDomain[1]);
43
pwPassword:=Addr(wPassword[1]);
44
pwApplicationName:=Addr(wApplicationName[1]);
45
46
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
47
StartupInfo.cb := SizeOf(TStartupInfo);
48
if not CreateProcessWithLogon(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE,pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,nil,nil,StartupInfo,ProcessInfo) then
49
RaiseLastOSError;
50
end;
51
52
end.
53

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53
