Seite 1 von 1

Privilegien setzen

Verfasst: 12.08.2009 18:21
von cxAlex
Mit diesem Code kann man schnell Privilegien setzen/rücksetzen die man für manche Aktionen unter Windows braucht:

Code: Alles auswählen

; Setzt Rechte die für manche System-Level Zugriffe nötig sind

; Liste der Privilegien:
; http://msdn.microsoft.com/en-us/library/bb530716%28VS.85%29.aspx

Macro Bool(_Arg)
  ((_Arg) Or #Null)
EndMacro

Procedure SetPrivilege(Privilege$, State = #True, PID = #Null)
  Protected TokenPrivileges.TOKEN_PRIVILEGES, hToken, RtVar
  
  ; Ich hab Spaß am Bool ^^
  ; Total Sinnlos...
  PID = Bool(Not PID)*GetCurrentProcess_() + PID
  State = Bool(State)*#SE_PRIVILEGE_ENABLED
  
  If OpenProcessToken_(PID, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hToken)
    TokenPrivileges\PrivilegeCount = 1
    If LookupPrivilegeValue_(#Null, Privilege$, TokenPrivileges\Privileges[0]\Luid)
      TokenPrivileges\Privileges[0]\Attributes = State
      If AdjustTokenPrivileges_(hToken, #False, @TokenPrivileges, SizeOf(TOKEN_PRIVILEGES), #Null, #Null)
        RtVar = Bool(GetLastError_() = #ERROR_SUCCESS)
      EndIf
    EndIf
    CloseHandle_(hToken)
    ProcedureReturn RtVar
  EndIf
EndProcedure

Debug SetPrivilege("SeDebugPrivilege")
Gruß, Alex

Verfasst: 12.08.2009 18:33
von X360 Andy
Hättest vieleicht en Beispiel was sich dardurch bewirken lassen könnte ?
Hab auch nachdem ich den Wiki Artikel zu Privilegien durchgelesen nicht wirklich ne Idee für was das gut sein könnte.

Also ein Anwendungsbeispiel

Verfasst: 12.08.2009 18:44
von ts-soft
X360 Andy hat geschrieben:Hättest vieleicht en Beispiel was sich dardurch bewirken lassen könnte ?
Hab auch nachdem ich den Wiki Artikel zu Privilegien durchgelesen nicht wirklich ne Idee für was das gut sein könnte.

Also ein Anwendungsbeispiel
Z.B. "SeShutdownPrivilege" brauchste um Deinen PC ausmachen zu dürfen :wink: