/jcl/examples/windows/asuser/CreateProcAsUserDemoMain.pas

https://github.com/the-Arioch/jcl · Pascal · 93 lines · 78 code · 14 blank · 1 comment · 5 complexity · 66931b65e172eee615b20f5f1abffa6f MD5 · raw file

  1. unit CreateProcAsUserDemoMain;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. edtDomain: TEdit;
  9. Label1: TLabel;
  10. edtUserName: TEdit;
  11. Label2: TLabel;
  12. edtPassword: TEdit;
  13. Label3: TLabel;
  14. edtCommandLine: TEdit;
  15. Label4: TLabel;
  16. btnCreateProcAsUser: TButton;
  17. btnCreateProcAsUserEx: TButton;
  18. lbEnvironment: TListBox;
  19. Label5: TLabel;
  20. edtEnvString: TEdit;
  21. btnAddEnvString: TButton;
  22. btnRemoveEnvString: TButton;
  23. btnClearEnvStrings: TButton;
  24. chkEnvAdditional: TCheckBox;
  25. chkEnvCurrentUser: TCheckBox;
  26. chkEnvLocalMachine: TCheckBox;
  27. procedure btnAddEnvStringClick(Sender: TObject);
  28. procedure btnClearEnvStringsClick(Sender: TObject);
  29. procedure btnRemoveEnvStringClick(Sender: TObject);
  30. procedure btnCreateProcAsUserClick(Sender: TObject);
  31. procedure btnCreateProcAsUserExClick(Sender: TObject);
  32. private
  33. public
  34. end;
  35. var
  36. Form1: TForm1;
  37. implementation
  38. uses
  39. JclMiscel, JclStrings, JclSysInfo;
  40. {$R *.dfm}
  41. procedure TForm1.btnAddEnvStringClick(Sender: TObject);
  42. begin
  43. lbEnvironment.Items.Add(edtEnvString.Text);
  44. end;
  45. procedure TForm1.btnClearEnvStringsClick(Sender: TObject);
  46. begin
  47. lbEnvironment.Items.Clear;
  48. end;
  49. procedure TForm1.btnRemoveEnvStringClick(Sender: TObject);
  50. var
  51. I: Integer;
  52. begin
  53. for I := lbEnvironment.Items.Count - 1 downto 0 do
  54. if lbEnvironment.Selected[I] then
  55. lbEnvironment.Items.Delete(I);
  56. end;
  57. procedure TForm1.btnCreateProcAsUserClick(Sender: TObject);
  58. begin
  59. CreateProcAsUser(edtDomain.Text, edtUserName.Text,
  60. edtPassWord.Text, edtCommandline.Text);
  61. end;
  62. procedure TForm1.btnCreateProcAsUserExClick(Sender: TObject);
  63. var
  64. Env: PChar;
  65. EnvOptions: TEnvironmentOptions;
  66. begin
  67. EnvOptions := [];
  68. if chkEnvAdditional.Checked then
  69. EnvOptions := EnvOptions + [eoAdditional];
  70. if chkEnvCurrentUser.Checked then
  71. EnvOptions := EnvOptions + [eoCurrentUser];
  72. if chkEnvLocalMachine.Checked then
  73. EnvOptions := EnvOptions + [eoLocalMachine];
  74. Env := CreateEnvironmentBlock(EnvOptions, lbEnvironment.Items);
  75. CreateProcAsUserEx(edtDomain.Text, edtUserName.Text,
  76. edtPassWord.Text, edtCommandline.Text, Env);
  77. DestroyEnvironmentBlock(Env);
  78. end;
  79. end.