uses Windows, SysUtils, ShellAPI; function ExecChildProcessAsAdmin(const CommandLine: String; const Parameters: String): Boolean; const CRunAs: String = 'runas'; var POperation: PChar; begin if Win32MajorVersion >= 6 then begin POperation := PChar(CRunAs); end else begin POperation := nil; end; Result := (ShellExecute(0,POperation,PChar(CommandLine),PChar(Parameters), nil,SW_SHOWNORMAL) > 32); end;
これでWindows Vistaでは画面がブラックアウトして確認のダイアログが表示されます。
ちなみにUACエレベーションを要求するrunasというverbは未だにundocumentedみたいです。
2008/11/17追記: ユーザが権限の昇格を拒否した場合、ShellExecuteはFALSE(0)を返し、GetLastErrorの値はERROR_CANCELLED(1223)となります。元ねたはAdvanced Windows 第5版 上 p.144
0 件のコメント:
コメントを投稿