Создать процесс с правами админа
Материал из DRKB
Создать процесс с правами админа[править | править код]
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').
Author: win_nt
Source: Взято из http://forum.sources.ru
ID: 02071