我需要运行cmd上的按钮点击作为管理员。它起作用了。但我需要以管理员身份运行它。这是怎么做的?
ShellExecute(Handle, 'open', 'c:\Windows\system32\cmd.exe', nil, nil, SW_SHOWNORMAL)
发布于 2013-03-11 02:55:29
将open
谓词替换为runas
,如下所示。无论如何,尽量避免路径硬编码:
uses
ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'runas', 'cmd.exe', nil, nil, SW_SHOWNORMAL);
end;
还可以通过将ElevationRequired
属性设置为True来向按钮添加盾牌图标。
发布于 2016-05-03 11:17:24
uses ShellApi, ...;
function RunAsAdmin(const Handle: Hwnd; const Path, Params: string): Boolean;
var
sei: TShellExecuteInfoA;
begin
FillChar(sei, SizeOf(sei), 0);
sei.cbSize := SizeOf(sei);
sei.Wnd := Handle;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := 'runas';
sei.lpFile := PAnsiChar(Path);
sei.lpParameters := PAnsiChar(Params);
sei.nShow := SW_SHOWNORMAL;
Result := ShellExecuteExA(@sei);
end;
//示例
RunAsAdmin(Handle, 'c:\Windows\system32\cmd.exe', '');
https://stackoverflow.com/questions/15319158
复制相似问题