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 Anwendung mit Systemrechten starten oder diese Erlangen? (https://www.delphipraxis.net/111801-anwendung-mit-systemrechten-starten-oder-diese-erlangen.html)

richard_boderich 9. Apr 2008 15:53


Anwendung mit Systemrechten starten oder diese Erlangen?
 
Hallo allerseits!

Ich möchte meine Anwendung mit gern mit Systemrechten starten, oder diese Erlangen, undzwar ohne einen Dienst. Im Forum hab ich diesen Code gefunden.

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;
Nun hab ich da mal ein paar Überlegungen und Fragen zu, berichtigt mich bitte wenn ich falsch liege. ;)

1. Da mein Programm eh immer mit Adminrechten gestartet wird, besitzt mein Programm auch die Rechte seine Privilegien zu ändern?

und..

2. Hatt jemand soetwas wie eine Parameterliste für diese Funktion? Ich meine was muss ich in der String Const "Privilege" an diese Funktion übergeben?

z.B. für...

Systemrechte -> ?
Adminrechte -> ?
Benutzterrechte ->?

usw.

Vielleicht kann der Dezipaitor da helfen? :)

mfG Richard

Apollonius 9. Apr 2008 16:06

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Mit dieser Funktion kannst du nur deaktivierte Privilegien aktivieren, die bereits vorhanden sind. Dazu brauchst du auch keine Admin-Rechte. Nicht vorhandene Privilegien kannst du dir nicht verschaffen.

richard_boderich 9. Apr 2008 17:07

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Also mittels CACLS kann ich mir kann ich mir Zugriff verschaffen! Also sollte es doch möglich sein oder?

mfG Richard

Apollonius 9. Apr 2008 17:08

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Von CACLs (Was ist das?) hast du nichts erwähnt. Worauf kannst du dir Zugriff verschaffen?

richard_boderich 9. Apr 2008 17:16

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Wenn ich als Admin das Komandozeilentool CACLS entsprechend Anwende, bekomme ich Zugriff auf den Ordner. man könnte jetzt mit Shellexecute arbeiten
und so den Zugriff auf diesen Ordner gewähren. Jedoch denke ich das es dort eine elegantere Lösung geben muss.

mfg Richard

Apollonius 9. Apr 2008 17:24

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Hier geht es in erster Linie um DACLs, nicht Privilegien. "Admin-Rechte" sind kein Privileg. Privilegien sind solche Dinge wie "herunterfahren dürfen" o.Ä. Einige davon hat ein Admin normalerweise, andere haben gewöhnlich alle.

Hast du als Admin Debug-Rechte? Damit ist das trivial. Andernfalls weniger.

richard_boderich 9. Apr 2008 18:06

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Es geht um ACL's

mfg Richard

Apollonius 9. Apr 2008 18:25

Re: Anwendung mit Systemrechten starten oder diese Erlangen?
 
Zitat:

Zitat von Apollonius
Hast du als Admin Debug-Rechte?



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