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

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

01.01.2007
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').

 

 

Автор: win_nt

Взято из https://forum.sources.ru