Wenn ich dann von Insider2004 mehr oder weniger bestätigt bekomme, daß die meisten (")Inkompatibilitäten(") zu Windows 2000 letztlich auf internen Versionsabfragen/-sperren beruhen (eigentlich eine an Kriminalität grenzende Dreistigkeit)
Wenn ich Funktionen nutze, die es nun einmal unter Windows 2000 nicht gab, dann baue ich auch eine Abfrage ein, das hat mit Kriminalität nix zu tun. Ich nutze dies z.B. für die Funktion IsUserAnAdmin, die es erst ab XP gibt, weil ich keine Lust hatte das manuell nachzuprogrammieren.
Letztlich geht es darum, daß diese "Inkompatibilitäten" nur auf Versionsabfragen /-sperren beruhen und nicht softwaretechnologisch bedingt sind. So drückte ich mich doch klar aus. Einfach mal richtig lesen. Sebastian, Du bist mir bisher nicht als solches Forenmitglied aufgefallen, das Beiträge nur halb liest bzw. versteht.
Daß eine Software auf einem Betriebsprogramm nicht laufen kann, wenn es Funktionen/Funktionsaufrufe benötigt bzw. zu benutzen versucht, die dieses nicht bietet (bieten kann), ist evident.
Ergänzung: Folgendes geistert in den Delphi-Foren umher. Ich glaube nicht, daß diese Funktion nicht vollumfänglich ihren Zweck erfüllt.
Delphi-Quellcode:
// IsAdmin
// Autor: Nico Bendlin
function IsAdmin: LongBool;
var
TokenHandle: THandle;
ReturnLength: DWORD;
TokenInformation: PTokenGroups;
AdminSid: PSID;
Loop: Integer;
begin
Result := False;
TokenHandle := 0;
if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, TokenHandle) then
try
ReturnLength := 0;
GetTokenInformation(TokenHandle, TokenGroups, nil, 0, ReturnLength);
TokenInformation := GetMemory(ReturnLength);
if Assigned(TokenInformation) then
try
if GetTokenInformation(TokenHandle, TokenGroups, TokenInformation,
ReturnLength, ReturnLength) then
begin
AdminSid := GetAdminSid;
for Loop := 0 to TokenInformation^.GroupCount - 1 do
begin
if EqualSid(TokenInformation^.Groups[Loop].Sid, AdminSid) then
begin
Result := True;
Break;
end;
end;
FreeSid(AdminSid);
end;
finally
FreeMemory(TokenInformation);
end;
finally
CloseHandle(TokenHandle);
end;
end;