94 lines
2.3 KiB
ObjectPascal
94 lines
2.3 KiB
ObjectPascal
unit CreateProcAsUserDemoMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
edtDomain: TEdit;
|
|
Label1: TLabel;
|
|
edtUserName: TEdit;
|
|
Label2: TLabel;
|
|
edtPassword: TEdit;
|
|
Label3: TLabel;
|
|
edtCommandLine: TEdit;
|
|
Label4: TLabel;
|
|
btnCreateProcAsUser: TButton;
|
|
btnCreateProcAsUserEx: TButton;
|
|
lbEnvironment: TListBox;
|
|
Label5: TLabel;
|
|
edtEnvString: TEdit;
|
|
btnAddEnvString: TButton;
|
|
btnRemoveEnvString: TButton;
|
|
btnClearEnvStrings: TButton;
|
|
chkEnvAdditional: TCheckBox;
|
|
chkEnvCurrentUser: TCheckBox;
|
|
chkEnvLocalMachine: TCheckBox;
|
|
procedure btnAddEnvStringClick(Sender: TObject);
|
|
procedure btnClearEnvStringsClick(Sender: TObject);
|
|
procedure btnRemoveEnvStringClick(Sender: TObject);
|
|
procedure btnCreateProcAsUserClick(Sender: TObject);
|
|
procedure btnCreateProcAsUserExClick(Sender: TObject);
|
|
private
|
|
public
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
uses
|
|
JclMiscel, JclStrings, JclSysInfo;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TForm1.btnAddEnvStringClick(Sender: TObject);
|
|
begin
|
|
lbEnvironment.Items.Add(edtEnvString.Text);
|
|
end;
|
|
|
|
procedure TForm1.btnClearEnvStringsClick(Sender: TObject);
|
|
begin
|
|
lbEnvironment.Items.Clear;
|
|
end;
|
|
|
|
procedure TForm1.btnRemoveEnvStringClick(Sender: TObject);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := lbEnvironment.Items.Count - 1 downto 0 do
|
|
if lbEnvironment.Selected[I] then
|
|
lbEnvironment.Items.Delete(I);
|
|
end;
|
|
|
|
procedure TForm1.btnCreateProcAsUserClick(Sender: TObject);
|
|
begin
|
|
CreateProcAsUser(edtDomain.Text, edtUserName.Text,
|
|
edtPassWord.Text, edtCommandline.Text);
|
|
end;
|
|
|
|
procedure TForm1.btnCreateProcAsUserExClick(Sender: TObject);
|
|
var
|
|
Env: PChar;
|
|
EnvOptions: TEnvironmentOptions;
|
|
begin
|
|
EnvOptions := [];
|
|
if chkEnvAdditional.Checked then
|
|
EnvOptions := EnvOptions + [eoAdditional];
|
|
if chkEnvCurrentUser.Checked then
|
|
EnvOptions := EnvOptions + [eoCurrentUser];
|
|
if chkEnvLocalMachine.Checked then
|
|
EnvOptions := EnvOptions + [eoLocalMachine];
|
|
|
|
Env := CreateEnvironmentBlock(EnvOptions, lbEnvironment.Items);
|
|
CreateProcAsUserEx(edtDomain.Text, edtUserName.Text,
|
|
edtPassWord.Text, edtCommandline.Text, Env);
|
|
DestroyEnvironmentBlock(Env);
|
|
end;
|
|
|
|
end.
|