Private Declare Function ZwAdjustPrivilegesToken Lib "ntdll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, ByVal pNewPrivilegeSet As Long, ByVal BufferLength As Long, ByVal pPreviousState As Long, ByVal pReturnLength As Long) As Long
Private Declare Function ZwOpenProcessToken Lib "ntdll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, ByVal pTokenHandle As Long) As Long
Private Declare Function ZwClose Lib "ntdll" (ByVal ObjectHandle As Long) As Long
Private Function EnablePrivilege() As Boolean
Dim TokenHandle As Long, TokenPrivilege(3&) As Long
If ZwOpenProcessToken(-1&, &H28&, VarPtr(TokenHandle)) >= 0& Then
TokenPrivilege(0&) = 1&
TokenPrivilege(1&) = 20&
TokenPrivilege(3&) = 2&
EnablePrivilege = (ZwAdjustPrivilegesToken(TokenHandle, False, VarPtr(TokenPrivilege(0&)), 16&, 0&, 0&) >= 0&)
ZwClose TokenHandle
End If
End Function