AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Abfragen ob Process Adminrechte hat?

Abfragen ob Process Adminrechte hat?

Ein Thema von Orbmu2k · begonnen am 27. Apr 2006 · letzter Beitrag vom 21. Aug 2015
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Abfragen ob Process Adminrechte hat?

  Alt 7. Jun 2006, 19:05
Also bis Win2k geh ich auch noch mit ... alle anderen haben sowieso verloren bei mir

Aber vielen dank auf jeden Fall nochmal, ich hab mich schon einige Wochen immermal durch irgendwelche Vista UAP(UAC) und Vista tauglichkeits Blogs geforstet aber in keine stand drin dass das SE_GROUP_ENABLED Flag der auschlaggebende Punkt ist.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#12

Re: Abfragen ob Process Adminrechte hat?

  Alt 8. Jun 2006, 09:21
Zitat von Orbmu2k:
in keine stand drin dass das SE_GROUP_ENABLED Flag der auschlaggebende Punkt ist.
Warum auch, der Bug ist in fast allen IsAdmin-Beispielen die man im Netz finden kann vorhanden (inklusive meinen alten Beispielen).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Abfragen ob Process Adminrechte hat?

  Alt 8. Jun 2006, 09:27
Hier ist deine alte Version:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : GetAdminSid
// Author : NBe
// Comment :
function GetAdminSid: PSID;
const
  // bekannte SIDs ... (WinNT.h)
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
  // bekannte RIDs ... (WinNT.h)
  SECURITY_BUILTIN_DOMAIN_RID: DWORD = $00000020;
  DOMAIN_ALIAS_RID_ADMINS: DWORD = $00000220;
begin
  Result := nil;
  AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
    SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0, Result);
end;

////////////////////////////////////////////////////////////////////////////////
// Procedure : IsAdmin
// Author : NBe
// Comment :
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#14

Re: Abfragen ob Process Adminrechte hat?

  Alt 8. Jun 2006, 09:51
Zitat von Luckie:
Hier ist deine alte Version:
Man lernt nie aus. Heutzutage würde ich die Funktion völlig anders implementieren.
Ich sehe keine Sinn darin, hier fehlerhaften Code zu posten. Es wäre hilfreicher, wenn sich jemand die Mühe macht und CheckTokenMembership nachprogrammiert (damit Windows NT 4.0 nicht ausgeschossen wird und die Leute verstehen, was die Funktion eigentlich macht).
  Mit Zitat antworten Zitat
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 01:11
@NicoDE:

So gerade die aktuelle Public Beta installiert und getestet ... das klappt jetzt wunderbar.
Hab deine Win2k Version genommen.

Vielen Dank nochmal
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 01:14
Zitat von NicoDE:
Zitat von Luckie:
Hier ist deine alte Version:
Man lernt nie aus. Heutzutage würde ich die Funktion völlig anders implementieren.
Ich sehe keine Sinn darin, hier fehlerhaften Code zu posten.
Nun ja, dass der Code fehlrhaft sein soll, höre ich jetzt zum ersten mal. Und ich habe ihn gepostet, damit man dein Codefragement dort einfügen kann.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 01:40
Zitat von Luckie:
Nun ja, dass der Code fehlrhaft sein soll, höre ich jetzt zum ersten mal.
Von fehlerhaft kann man wohl auch kaum sprechen. Immerhin funktioniert der Code ja bis Vista. Das Problem ist eben, daß etwas neues eingeführt wurde, was eine alte Schwachstelle der bekannten Methode zutage treten läßt. Ein Fehler ist es eigentlich wenige ... eher fehlende Funktionalität.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#18

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 07:46
Zitat von Olli:
Von fehlerhaft kann man wohl auch kaum sprechen. Immerhin funktioniert der Code ja bis Vista. Das Problem ist eben, daß etwas neues eingeführt wurde, was eine alte Schwachstelle der bekannten Methode zutage treten läßt. Ein Fehler ist es eigentlich wenige ... eher fehlende Funktionalität.
Das Problem gab es schon früher (siehe Anhang). Nur, dass es mit Vista für den Benutzer einfacher zu erreichen, bzw. zum Standard geworden ist.

Zum Anhang: Bei einem auf diese Art gestarteten Programm muss IsUserAdmin() False liefern (wenn man die Aussage als 'der Benutzer hat lokale administrative Rechte' interpretieren möchte).
Miniaturansicht angehängter Grafiken
runasprotected_866.png  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 12:01
Könntest du deine obige Funktien entsprechend anpassen, da ich kein Vista zum Testen habe?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#20

Re: Abfragen ob Process Adminrechte hat?

  Alt 9. Jun 2006, 12:41
Zitat von Luckie:
Könntest du deine obige Funktien entsprechend anpassen, da ich kein Vista zum Testen habe?
Du brauchst kein Vista zum Testen - siehe mein Beitrag mit Anhang.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz