Autor Beitrag
mcbrunox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 92



BeitragVerfasst: Di 04.02.03 19:28 
hab da mal ne frage zu em code...setzt er wirklich alle privilegien ?
ich denk nicht denn wenn ich mir das result anschau kommt das gleiche raus auch ohne AdjustTokenPrivileges...wieso nun ?

ausblenden 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:
function EnableAllPrivileges : string;
var c1, c2, c3 : dword;
   ptp        : PTokenPrivileges;
   i1         : integer;
   arrCh      : array [0..MAX_PATH] of char;
begin
 result := '';
 if OpenProcessToken(windows.GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, c1) then
   try
     c2 := 0;
     GetTokenInformation(c1, TokenPrivileges, nil, 0, c2);
     if c2 <> 0 then begin
       ptp := AllocMem(c2);
       if GetTokenInformation(c1, TokenPrivileges, ptp, c2, c2) then begin
         for i1 := 0 to integer(ptp^.PrivilegeCount) - 1 do begin
           c3 := MAX_PATH;
           if LookupPrivilegeName(nil, ptp^.Privileges[i1].Luid, arrCh, c3) then
                result := result + #$D#$A + arrCh + ' '
           else result := result + #$D#$A + '??? ';
           result := result + booleanToChar(ptp^.Privileges[i1].Attributes and SE_PRIVILEGE_ENABLED <> 0);
           ptp^.Privileges[i1].Attributes := ptp^.Privileges[i1].Attributes or SE_PRIVILEGE_ENABLED;
         end;
         AdjustTokenPrivileges(c1, false, ptp^, c2, PTokenPrivileges(nil)^, cardinal(pointer(nil)^));
       end;
       FreeMem(ptp);
     end;
   finally CloseHandle(c1) end;
 Delete(result, 1, 2);
end;
[/code]
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.02.03 19:34 
Ein Schuss ins Blaue (nach schnellem Überfliegen): die Funktion setzt nur die Rechte, die du ohnehin hast. Wär´s so einfach, an fremde Rechte ranzukommen, gäbe es mittlerweile einen Patch für ein ernstes Sicherheitsproblem.
mcbrunox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 92



BeitragVerfasst: Di 04.02.03 19:42 
also mit der function oben wird nur SeBackupPrivilege auf enabled gestellt.
ist das das einzige recht was ich habe zu ändern ?
ich wollte eigentlich nur das ShutdownPrivileg ändern...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.02.03 19:52 
So holst du dir die ShutDown-Privileges. Gleich mit ExtitWodowsEx gekapselt:
ausblenden 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:
function ExitWin(flag:word): Boolean;
var vi      : TOSVersionInfo;
    hToken  : THandle;
    tp      : TTokenPrivileges;
    h       : DWord;

begin
  //result := false;
  vi.dwOSVersionInfoSize:=SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    // Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hToken);
    LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^,h);
    CloseHandle(hToken);
    result := ExitWindowsEx(flag,0);
  end
  else // Windows 95
  begin
    Result := ExitWindowsEx(flag,0);
  end;
end;

Aufruf mit:
ausblenden Quelltext
1:
ExitWin(EWX_POWEROFF);					
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.04.03 14:28 
Funktioniert echt klasse Luckie.
Nur eines:
Wo hast du die Infos über TTokenPrivileges her?
Würd mich mal interessieren.

Thx.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.04.03 14:30 
Stehen im PSDK oder online hier: www.msdn.microsoft.com .
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.04.03 15:00 
Gut anders gefragt, denn dort hab ich auch schon gesucht.
Welche Schlagwörter hast du benutzt.
Vielleicht kannste dich daran ja noch erinnern.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.04.03 15:38 
Ich würde es mal hiermit probieren:
OpenProcessToken
AdjustTokenPrivileges
TokenPrivileges
:wink: