windows - Delphi Administrator rettigheder D7 W7

Indlæg af Hanne Mølgaard Plasc

Problem




   Mulig duplikat:

  Delphi: Spørg efter UAC elevation, når det er nødvendigt





Min ansøgning, der er skrevet i Delphi 7 til Windows 7, kræver administratorrettigheder til nogle funktioner. Hvordan kan jeg hæve det til administrator fra kildekoden?


Jeg kontrollerer brugerrettighederne med denne kode:


function IsUserAdmin : boolean;
const CAdminSia : TSidIdentifierAuthority = (value: (0, 0, 0, 0, 0, 5));
var sid : PSid;
    ctm : function (token: dword; sid: pointer; var isMember: bool) : bool; stdcall;
    b1  : bool;
begin
  result := false;
  ctm := GetProcAddress(LoadLibrary('advapi32.dll'), 'CheckTokenMembership');
  if (@ctm <> nil) and AllocateAndInitializeSid(CAdminSia, 2, $20, $220, 0, 0, 0, 0, 0, 0, sid) then
  begin
    result := ctm(0, sid, b1) and b1;
    FreeSid(sid);
  end;
end;


Hvis applikationen startede som administrator, returnerer den True; hvis ikke, så falsk.
Nu hvis jeg har False som resultat, vil jeg automatisk hæve programmet til Administrator.


Jeg forsøgte med åbenlyse elevatorer til administratoren, men hvis jeg starter programmet, så ser jeg en UAC-prompt og hvis jeg svarer 'Nej', vil applikationen slet ikke løbe.


Enhver chance for hjælp?


Jeg har brug for administratorrettigheder for rå adgang til det fysiske drev.


REDIGERE:


Jeg forsøgte også at deaktivere UAC kun til denne applikation (ParamStr (0)) også fra kode (efter at have trykket på 'Deaktiver UAC for denne applikation' -knap).

Bedste reference


Processer modtager deres token ved opstart og kan ikke ændre dem. Således, hvis du vil have en app, der ser ud til at hæve for en del af dens funktionalitet, skal denne funktionalitet indebære en ny proces. Hvad du ikke kan gøre er at hæve en eksisterende proces.

Andre referencer 1


Hvis du vil have administratorrettigheder, skal du gennemgå UAC. Du kan ikke løfte til administrator uden at vise UAC-prompt, medmindre UAC er deaktiveret. Du skal selvfølgelig vælge JA på UAC-prompten for at få administratorrettigheder.