Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Создать процесс с правами админа

01.01.2007
win_nt

unit Main; 

interface 

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi; 

type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
  end; 

var 
  Form1: TForm1; 

implementation 

function CreateProcessWithLogonW(
  lpUsername: PWideChar; 
  lpDomain: PWideChar; 
  lpPassword: PWideChar; 
  dwLogonFlags: DWORD; 
  lpApplicationName: PWideChar; 
  lpCommandLine: PWideChar; 
  dwCreationFlags: DWORD; 
  lpEnvironment: Pointer; 
  lpCurrentDirectory: PWideChar; 
  const lpStartupInfo: _STARTUPINFOA; 
  var lpProcessInfo: PROCESS_INFORMATION): BOOL;
  stdcall; external 'advapi32.dll' name 'CreateProcessWithLogonW'; 


{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  hLib:THandle; 
  si: _STARTUPINFOA; 
  pi: Process_Information; 
begin 
  ZeroMemory(@Si, Sizeof(si));
  si.cb := SizeOf(si); 
  CreateProcessWithLogonw('administrator', nil, 'master', 1, nil, 'notepad', 0, nil, nil, si, pi); 
end; 

end.

Должно работать, только лучше указывать полный путь до папки запускаемого приложения... без этого у меня некоторые приложения не запускались(один из параметров после 'notepad').

Previous page:
Как запустить и подождать завершения 2-х процессов?
Top:
DRKB
Next page:
Как сделать, чтобы запускалась только одна копия приложения?