shellexecute 执行完成_ShellExecute如何使用管理员身份执行

#include

#include

#include

int _tmain(int argc,TCHAR* argv[])

{

SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTEINFO)};

sei.lpVerb=TEXT("runas");

sei.lpFile=TEXT("cmd.exe");//add  application  which you want to run as administrator here

sei.nShow=SW_SHOWNORMAL;//without this,the windows will be hiden

if(!ShellExecuteEx(&sei)){

DWORD dwStatus=GetLastError();

if(dwStatus==ERROR_CANCELLED){

printf("提升权限被用户拒绝\n");

}

else

if(dwStatus==ERROR_FILE_NOT_FOUND){

printf("所要执行的文件没有找到\n");

}

}

return 0;

}

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

const

LOGON_WITH_PROFILE = 1;

LOGON_NETCREDENTIALS_ONLY = 2;

function CreateProcessWithLogon(

lpUsername: PWChar;

lpDomain: PWChar;

lpPassword: PWChar;

dwLogonFlags: DWORD;

lpApplicationName: PWChar;

lpCommandLine: PWChar;

dwCreationFlags: DWORD;

lpEnvironment: Pointer;

lpCurrentDirectory: PWChar;

const lpStartupInfo: TStartupInfo;

var lpProcessInfo: TProcessInformation

): BOOL; stdcall;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function CreateProcessWithLogon; external advapi32 name 'CreateProcessWithLogonW';

procedure TForm1.Button1Click(Sender: TObject);

var

wUsername, wDomain, wPassword, wApplicationName: WideString;

pwUsername, pwDomain, pwPassword, pwApplicationName: PWideChar;

StartupInfo: TStartupInfo;

ProcessInfo: TProcessInformation;

begin

wUsername := 'administrator';

wDomain := '';

wPassword := '123456';

wApplicationName := 'cmd.exe';

pwUsername := Addr(wUsername[1]);

pwDomain := Addr(wDomain[1]);

pwPassword := Addr(wPassword[1]);

pwApplicationName := Addr(wApplicationName[1]);

FillChar(StartupInfo, SizeOf(TStartupInfo), 0);

StartupInfo.cb := SizeOf(TStartupInfo);

if not CreateProcessWithLogon(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE,

pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,

nil,nil,StartupInfo,ProcessInfo) then

RaiseLastOSError;

end;

end.

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

weixin_39969028

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值