Privilegien setzen
Verfasst: 12.08.2009 18:21
Mit diesem Code kann man schnell Privilegien setzen/rücksetzen die man für manche Aktionen unter Windows braucht:
Gruß, Alex
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")