Deklaration: Declare Function AdjustTokenPrivileges Lib "advapi32.dll" ( _ ByVal TokenHandle As Long, _ ByVal DisableAllPrivileges As Long, _ NewState As Any, _ ByVal BufferLength As Long, _ PreviousState As Any, _ ReturnLength As Long) As Long Beschreibung: Parameter:
Rückgabewert: Const ERROR_SUCCESS = 0& ' Der Funktionsaufruf war erfolgreich Const ERROR_NOT_ALL_ASSIGNED = 1300& ' Nicht alle Privilegien konnten erfolgreich geändert werden Beispiel: Private Declare Function ExitWindowsEx Lib "user32" ( _ ByVal uFlags As Long, _ ByVal dwReserved As Long) As Long Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" _ Alias "LookupPrivilegeValueA" ( _ ByVal lpSystemName As String, _ ByVal lpName As String, _ lpLuid As LUID) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" ( _ ByVal TokenHandle As Long, _ ByVal DisableAllPrivileges As Long, _ NewState As TOKEN_PRIVILEGES, _ ByVal BufferLength As Long, _ PreviousState As TOKEN_PRIVILEGES, _ ReturnLength As Long) As Long Private Declare Function OpenProcessToken Lib "advapi32.dll" ( _ ByVal ProcessHandle As Long, _ ByVal DesiredAccess As Long, _ TokenHandle As Long) As Long Private Declare Function GetVersionEx Lib "kernel32" _ Alias "GetVersionExA" ( _ lpVersionInformation As OSVERSIONINFO) As Long Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Private Type LUID LowPart As Long HighPart As Long End Type Private Type LUID_AND_ATTRIBUTES pLuid As LUID Attributes As Long End Type Private Const ANYSIZE_ARRAY = 1 ' setzt die Größe des Privileges Array's Private Type TOKEN_PRIVILEGES PrivilegeCount As Long Privileges(1) As LUID_AND_ATTRIBUTES End Type ' LUID_AND_ATTRIBUTES Attributes-Konstante Private Const SE_PRIVILEGE_ENABLED = 2 ' aktiviert ein Privileg ' ExitWindowsEx uFlags-Konstanten Private Const EWX_FORCE = 4 ' beendet alle Programme ohne Aufforderung an den Benutzer Private Const EWX_LOGOFF = 0 ' meldet sich neu am Netzwerk an Private Const EWX_REBOOT = 2 ' startet den Computer neu Private Const EWX_SHUTDOWN = 1 ' fährt den Computer herunter Private Const EWX_POWEROFF = 8 ' fährt den Computer herunter und schaltet ihn ab wenn möglich ' LookupPrivilegeValue lpName-Konstanten Private Const SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege" ' wird benötigt, um den Primary-Token zuweisen zu können Private Const SE_AUDIT_NAME = "SeAuditPrivilege" ' wird benutzt, um audit-log-Einträge generieren zu können Private Const SE_BACKUP_NAME = "SeBackupPrivilege" ' wird benötigt, um Backup-Operationen durchführen zu können Private Const SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege" ' wird benötigt, um Änderungen für Notify-Funktionen im Dateisystem zu erhalten Private Const SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege" ' wird benötigt, um eine Paging-Datei erstellen zu können Private Const SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege" ' wird benötigt, um permanente Objekte erstellen zu können Private Const SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege" ' wird benötigt, um einen Primary-Token erstellen zu können Private Const SE_DEBUG_NAME = "SeDebugPrivilege" ' wird benötigt, um einen Prozess debuggen zu können Private Const SE_ENABLE_DELEGATION_NAME = ("SeEnableDelegationPrivilege") ' wird benötigt, um Netzwerkrechner als vertrauenswürdig zu markieren Private Const SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege" ' wird benötigt, um die Basis-Priorität eines Prozesses erhöhen zu können Private Const SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege" ' wird benötigt, um die Quote eines Prozesses erhöhen zu können Private Const SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege" ' wird benötigt, um Gerätetreiber laden oder entladen zu können Private Const SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege" ' wird benötigt, um physische Speicherseiten einfrieren zu können Private Const SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege" ' wird benötigt, um einen Maschinen-Account erstellen zu können Private Const SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege" ' wird benötigt, um Informationen eines einzelnen Prozesses ermitteln zu können Private Const SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege" ' wird benötigt, um einen Netzwerkrechner herunterfahren zu können Private Const SE_RESTORE_NAME = "SeRestorePrivilege" ' wird benötigt, um Wiederherstellungsoperationen durchführen zu können Private Const SE_SECURITY_NAME = "SeSecurityPrivilege" ' wird benötigt, um einige sicherheitsrelevante Funktionen nutzen zu können Private Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege" ' wird benötigt, um das lokale System herunterfahren zu können Private Const SE_SYNC_AGENT_NAME = ("SeSyncAgentPrivilege") ' wird benötigt, um alle Leserechte eines Dateisystems zu erlauben die sonst nur der Administrator besitzt Private Const SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege" ' wird benötigt, um auf nicht flüchtigen Speicher des Systems zugreifen zu können Private Const SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege" ' wird benötigt, um alle Informationen des Systems auslesen zu können Private Const SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege" ' wird benötigt, um die Systemzeit ändern zu können Private Const SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege" ' wird benötigt, um die Zugehörigkeit eines Objektes ändern zu können Private Const SE_TCB_NAME = "SeTcbPrivilege" ' ' _ ' wird benötigt, um das lokale System als Bestandteil des Netzwerkrechners anmelden zu können Private Const SE_UNDOCK_NAME = ("SeUndockPrivilege") ' wird benötigt, um einen Laptop undocken zu können Private Const SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege" ' wird benötigt, um unaufgeforderte Daten eines Terminals lesen zu können ' AdjustTokenPrivileges DesiredAccess-Konstanten Private Const READ_CONTROL = &H20000 ' wird für einige Standardrechte der TOKEN-Konstanten benötigt Private Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL) ' wird für TOKEN_EXECUTE benötigt Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)' wird für TOKEN_READ benötigt Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL) ' wird für TOKEN_WRITE benötigt Private Const TOKEN_ADJUST_DEFAULT = (&H80) ' wird benötigt, um die Zugriffsrechte des Standardbesitzers, der Hauptgruppe oder DACL eines Zugriffs-Token zu ändern Private Const TOKEN_ADJUST_GROUPS = (&H40) ' wird benötigt, um die Zugriffsrechte einer Gruppe eines Zugriffs-Token zu ändern Private Const TOKEN_ADJUST_PRIVILEGES = (&H20) ' wird benötigt, um die Privilegien eines Zugriffs-Token zu setzen Private Const TOKEN_ADJUST_SESSIONID = (&H100) ' wird benötigt, um die Session-ID eines Zugriffs-Token zu ändern. Das SE_TCB_NAME Privileg wird benötigt. Private Const TOKEN_ASSIGN_PRIMARY = (&H1) ' ' wird benötigt, um ein Primary-Token einem Prozess zuweisen zu können. ' Das SE_ASSIGNPRIMARYTOKEN_NAME Privileg wird für diese Aktion benötigt. Private Const TOKEN_DUPLICATE = (&H2) ' wird benötigt, um ein Zugriffs-Token dublizieren zu können Private Const TOKEN_EXECUTE = (STANDARD_RIGHTS_EXECUTE) ' kombiniert die Privilegien STANDARD_RIGHTS_EXECUTE und TOKEN_IMPERSONATE Private Const TOKEN_IMPERSONATE = (&H4) ' wird benötigt, um einen verkörperten Zugriffs-Token einem Prozess zuweisen zu können Private Const TOKEN_QUERY = (&H8) ' wird benötigt, um einen Zugriffs-Token abzufragen Private Const TOKEN_QUERY_SOURCE = (&H10) ' wird benötigt, um die Quelle eines Zugriffs-Token abfragen zu können Private Const TOKEN_READ = (STANDARD_RIGHTS_READ Or TOKEN_QUERY) ' kombiniert die Privilegien STANDARD_RIGHTS_READ und TOKEN_QUERY Private Const TOKEN_WRITE = (STANDARD_RIGHTS_WRITE Or _ TOKEN_ADJUST_PRIVILEGES Or TOKEN_ADJUST_GROUPS Or TOKEN_ADJUST_DEFAULT) ' kombiniert die Privilegien STANDARD_RIGHTS_WRITE, TOKEN_ADJUST_PRIVILEGES, ' TOKEN_ADJUST_GROUPS und TOKEN_ADJUST_DEFAULT Private Const TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ TOKEN_ASSIGN_PRIMARY Or TOKEN_DUPLICATE Or TOKEN_IMPERSONATE Or TOKEN_QUERY _ Or TOKEN_QUERY_SOURCE Or TOKEN_ADJUST_PRIVILEGES Or TOKEN_ADJUST_GROUPS Or _ TOKEN_ADJUST_SESSIONID Or TOKEN_ADJUST_DEFAULT) ' wird benötigt, um alle Zugriffsrechte eines Zugriffs-Token zu erlauben ' AdjustTokenPrivileges Rückgabe-Konstanten Private Const ERROR_SUCCESS = 0& ' der Funktionsaufruf war erfolgreich Private Const ERROR_NOT_ALL_ASSIGNED = 1300& ' nicht alle Privilegien konnten erfolgreich geändert werden ' Windows neu starten Public Sub Command1_Click() Dim Retval As Long, hToken As Long, TKP As TOKEN_PRIVILEGES Dim TKPOld As TOKEN_PRIVILEGES, OSVI As OSVERSIONINFO ' Strukturgröße setzen OSVI.dwOSVersionInfoSize = Len(OSVI) ' Betriebsystemversion ermitteln Call GetVersionEx(OSVI) ' Falls Windows NT/2000/XP ausgeführt wird, erst Sicherheitseinstellungen vornehmen If OSVI.dwPlatformId = 2 Then ' öffnet einen Prozess Zugriffs-Token If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES _ Or TOKEN_QUERY, hToken) Then ' ermittelt die Zugriffs-ID für das Herunterfahren des Systems Retval = LookupPrivilegeValue(vbNullString, _ SE_SHUTDOWN_NAME, TKP.Privileges(0).pLuid) ' setzt in der Struktur, dass das Herunterfahren des Systems ' für diesen Prozess/Token aktiviert werden soll TKP.PrivilegeCount = 1 TKP.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED ' setzt die neuen Privilegien des Zugriff-Tokens und fährt bei Erfolg das System herunter If AdjustTokenPrivileges(hToken, 0&, TKP, LenB(TKPOld), TKPOld, Retval) Then Call ExitWindowsEx(EWX_REBOOT, 0&) End If End If Else ' Win95/98 wird ausgeführt. Keine Aktion ist notwendig. Call ExitWindowsEx(EWX_REBOOT, 0&) End If End Sub Diese Seite wurde bereits 16.256 mal aufgerufen. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |