Entwickler-Ecke
Windows API - Administratorrechte nach Programmstart anfordern
Nano-Ware - Do 20.10.11 23:17
Titel: Administratorrechte nach Programmstart anfordern
Hey,
ich schreibe derzeit ein Programm, dass generell ohne Adminrechte läuft, aber bei bestimmter Benutzereingabe, soll der Benutzer per UAC gefragt werden ob mein Programm Adminrechte bekommen darf. Ich weis, dass es nicht möglich ist, nachträglich für eine Anwendung diese Rechte einzufordern, daher suche ich Alternative, um das Problem trotzdem zu lösen. Eine zweite Anwendung möchte ich nicht mitliefern. Habt ihr eventuell Ideen?
Danke!
bummi - Fr 21.10.11 06:09
ich hatte diesen Code vor einiger Zeit im Netz gefunden .....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| procedure ExecuteNewInstance(AExplicitAdmin, AWait: Boolean; AWindow: THandle; AParams: string); type TIsUserAnAdminFunc = function (): BOOL; stdcall; var Shell32DLL: THandle; IsUserAnAdminFunc: TIsUserAnAdminFunc; AlreadyAdmin: Boolean; ExecuteInfo: SHELLEXECUTEINFO; begin ExecuteInfo.cbSize := sizeof(SHELLEXECUTEINFO); ExecuteInfo.Wnd := AWindow; ExecuteInfo.fMask := SEE_MASK_NOCLOSEPROCESS; AlreadyAdmin := False; Shell32DLL := LoadLibrary('shell32.dll'); try if Shell32DLL <> 0 then begin @IsUserAnAdminFunc := GetProcAddress(Shell32DLL, 'IsUserAnAdmin'); if Assigned(@IsUserAnAdminFunc) then AlreadyAdmin := IsUserAnAdminFunc(); end; finally FreeLibrary(Shell32DLL); end; if AExplicitAdmin and not AlreadyAdmin then ExecuteInfo.lpVerb := 'runas' else ExecuteInfo.lpVerb := 'open';
ExecuteInfo.lpFile := PChar(ParamStr(0)); ExecuteInfo.lpParameters := PChar(AParams); ExecuteInfo.lpDirectory := PChar(ExtractFilePath(ParamStr(0))); ExecuteInfo.nShow := SW_SHOWNORMAL;
if ShellExecuteEx(@ExecuteInfo) then try if AWait then WaitForSingleObject(ExecuteInfo.hProcess, INFINITE); finally CloseHandle(ExecuteInfo.hProcess); end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!