Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi system priveleges (https://www.delphipraxis.net/65468-system-priveleges.html)

smc 16. Mär 2006 22:18


system priveleges
 
Hallo,

ich suche derzeit eine möglichkeit meinem Programm beim start System Privilegien zu geben da ich andernfalls bei manchen fremd-applikationen nicht das handle auslesen kann.

Hat das zufällig schon jmd gemacht? Gibts eine API dafür?


gruß

Luckie 16. Mär 2006 23:01

Re: system priveleges
 
Starte es eben enzweder unter einem anderem Benutzerkonto mit http://www.michael-puff.de/Developer...ithLogonW.html oder versuch dir die nötigen Privilegien mit
Delphi-Quellcode:
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out PreviousState: Boolean): DWORD;
var
  Token            : THandle;
  NewState         : TTokenPrivileges;
  Luid             : TLargeInteger;
  PrevState        : TTokenPrivileges;
  Return           : DWORD;
begin
  SetLastError(0); // Clear last system error state
  PreviousState := True;
  if (GetVersion() > $80000000) then // Win9x
    Result := ERROR_SUCCESS
  else // WinNT
  begin
    if OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
    begin
      try
        if LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        begin
          NewState.PrivilegeCount := 1;
          NewState.Privileges[0].Luid := Luid;
          if fEnable then
            NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
          else
            NewState.Privileges[0].Attributes := 0;
          if AdjustTokenPrivileges(Token, False, NewState, SizeOf(TTokenPrivileges), PrevState, Return) then
          begin
            PreviousState := (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
          end;
        end;
      finally
        CloseHandle(Token);
      end;
    end;
    Result := GetLastError;
  end;
end;
zu holen, das geht aber auch nur, wenn man die Rechte dázu hat. Ansoinsten wäre es eine eklatante Sicherheitslücke, wenn sich ein Programm einfach so Systemrechte holen könnte. Dann musst du eben damit leben, dass es ohne die nötigen Rechte nicht möglich ist an alle Informationen dranzukommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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