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.515 mal aufgerufen. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Buchempfehlung Tipp des Monats November 2024 Dieter Otter WAVE-Dateien aufnehmen Ein Code-Ausschnitt, mit dem sich WAVE-Dateien in verschiedenen Aufnahmequalitäten aufnehmen lassen. sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||||||||
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. |