理想情況下,您可以使用MSI作爲您的安裝程序/更新程序 - 它知道是否/如何提升。
你其他的解決辦法是用行政privelages到ShellExecute
您的更新:
RunAsAsAdmin("C:\Users\Adam\AppData\Temp\ISW-1864.exe");
哪裏RunAsAdmin
是代碼,知道如何在這個過程中執行的過程和提升:
function RunAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean;
{
See Step 3: Redesign for UAC Compatibility (UAC)
http://msdn.microsoft.com/en-us/library/bb756922.aspx
}
var
sei: TShellExecuteInfo;
begin
ZeroMemory(@sei, SizeOf(sei));
sei.cbSize := SizeOf(TShellExecuteInfo);
sei.Wnd := hwnd;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := PChar('runas');
sei.lpFile := PChar(Filename); // PAnsiChar;
if parameters <> '' then
sei.lpParameters := PChar(parameters); // PAnsiChar;
sei.nShow := SW_SHOWNORMAL; //Integer;
Result := ShellExecuteEx(@sei);
end;
所以纔會這樣有效用「是/否」框提示我的用戶允許我的自動更新應用程序運行? – Adam 2010-10-29 20:22:20
@亞當:是的,這是我的理解。當然,這是UAC「灰色桌面」類型的Yes/No框。 – 2010-10-29 20:31:13