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 件のコメント:
コメントを投稿