ShellExecute如何使用管理員身份執行

#include <stdio.h>
#include<windows.h>
#include<tchar.h>

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.
相關文章
相關標籤/搜索