在XP里提升自己的程序以获得特定的权限

来源:互联网 发布:淘宝店铺优惠如何设置 编辑:程序博客网 时间:2024/06/15 11:00
''******************************************************''提升权限''---------------------------------------------------''鬼龙之舞''2003-12-21''******************************************************Private Type LUID
  lowpart As Long
  highpart As LongEnd TypePrivate Type LUID_AND_ATTRIBUTES
  pLuid As LUID
  Attributes As LongEnd TypePrivate Type TOKEN_PRIVILEGES
  PrivilegeCount As Long ''权限的个数n
  Privileges(0) As LUID_AND_ATTRIBUTES ''如果要多个权限,数组改为(n-1)个元素End TypePrivate Declare Function GetCurrentProcess Lib "kernel32" () As LongPrivate Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As LongPrivate Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As LongPrivate Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, ByVal PreviousState As Any, ReturnLength As Long) As LongConst SE_PRIVILEGE_ENABLED = &H2
Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"Const SE_DEBUG_NAME = "SeDebugPrivilege"Const SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"Const SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"Const SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"Const SE_INCREASE_QUOTA_NAME = ("SeIncreas=otaPrivilege")
Const SE_UNSOLICITED_INPUT_NAME = ("SeUnsolicitedInputPrivilege")
Const SE_MACHINE_ACCOUNT_NAME = ("SeMachineAccountPrivilege")
Const SE_TCB_NAME = ("SeTcbPrivilege")
Const SE_SECURITY_NAME = ("SeSecurityPrivilege")
Const SE_TAKE_OWNERSHIP_NAME = ("SeTakeOwnershipPrivilege")
Const SE_LOAD_DRIVER_NAME = ("SeLoadDriverPrivilege")
Const SE_SYSTEM_PROFILE_NAME = ("SeSystemProfilePrivilege")
Const SE_SYSTEMTIME_NAME = ("SeSystemtimePrivilege")
Const SE_PROF_SINGLE_PROCESS_NAME = ("SeProfileSingleProcessPrivilege")
Const SE_INC_BASE_PRIORITY_NAME = ("SeIncreaseBasePriorityPrivilege")
Const SE_CREATE_PAGEFILE_NAME = ("SeCreatePagefilePrivilege")
Const SE_CREATE_PERMANENT_NAME = ("SeCreatePermanentPrivilege")
Const SE_BACKUP_NAME = ("SeBackupPrivilege")
Const SE_RESTORE_NAME = ("SeRestorePrivilege")
Const SE_AUDIT_NAME = ("SeAuditPrivilege")
Const SE_SYSTEM_ENVIRONMENT_NAME = ("SeSystemEnvironmentPrivilege")
Const SE_CHANGE_NOTIFY_NAME = ("SeChangeNotifyPrivilege")
Const SE_REMOTE_SHUTDOWN_NAME = ("SeRemoteShutdownPrivilege")

Public Sub GetMorePrivilege()   ''取得[调试权限],取得这个权限后,可以结束几乎所有的进程
  ''如果要在NT里关机,则需要取SE_SHUTDOWN_NAME这个权限
    Dim tLuid As LUID
  Dim tp As TOKEN_PRIVILEGES, tpOld As TOKEN_PRIVILEGES
  Dim hToken As Long
    OpenProcessToken GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken   LookupPrivilegeValue vbNullString, SE_DEBUG_NAME, tp.Privileges(0).pLuid   tp.PrivilegeCount = 1   tp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
  Call AdjustTokenPrivileges(hToken, False, tp, 0&, 0&, 0&)
End Sub
 
原创粉丝点击