Zitat von
himitsu:
In welchem
OS hast'n das getestet und wie hast du die Rechte geprüft?
Im Moment Windows 7
Elevation hab ich mit einer Funktion aus der JCL getestet:
Delphi-Quellcode:
function IsElevated: Boolean;
const
TokenElevation = TTokenInformationClass(20);
type
TOKEN_ELEVATION = record
TokenIsElevated: DWORD;
end;
var
TokenHandle: THandle;
ResultLength: Cardinal;
ATokenElevation: TOKEN_ELEVATION;
begin
if (IsWinVista or IsWinServer2008 or IsWin7 or IsWinServer2008R2) then
begin
TokenHandle := 0;
if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, TokenHandle) then
begin
try
ResultLength := 0;
if GetTokenInformation(TokenHandle, TokenElevation, @ATokenElevation, SizeOf(ATokenElevation), ResultLength) then
Result := ATokenElevation.TokenIsElevated <> 0
else
Result := False;
finally
CloseHandle(TokenHandle);
end;
end
else
Result := False;
end
else
Result := IsAdministrator;
end;
Das Ergebnis stimmt auch, bei einem
UAC-bestätigten Start wird der Status korrekt erkannt.