Const   TOKEN_ADJUST_PRIVILEGES   =   &H20   
  Const   TOKEN_QUERY   =   &H8   
  Const   SE_PRIVILEGE_ENABLED   =   &H2   
  Const   ANYSIZE_ARRAY   =   1   
    
  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   Type   TOKEN_PRIVILEGES   
          PrivilegeCount   As   Long   
          Privileges(ANYSIZE_ARRAY)   As   LUID_AND_ATTRIBUTES   
  End   Type   
上面几个常量和类型不懂什么意思
LookupPrivilegeValue 
AdjustTokenPrivileges
OpenProcessToken 
上面的三个API,在我的API电子手册里没有解释,MSDN是英文的解释看不懂。
请高手解释

解决方案 »

  1.   

    这是提升权限的
    Public Function EnablePrivilege() As Boolean
        Dim hdlProcessHandle As Long
        Dim hdlTokenHandle As Long
        Dim tmpLuid As LUID
        Dim tkp As TOKEN_PRIVILEGES
        Dim tkpNewButIgnored As TOKEN_PRIVILEGES
        Dim lBufferNeeded As Long
        Dim lp As Long
        hdlProcessHandle = GetCurrentProcess()
        lp = OpenProcessToken(hdlProcessHandle, TOKEN_ALL_ACCESS, hdlTokenHandle)
        lp = LookupPrivilegeValue(vbNullString, "SeDebugPrivilege", tmpLuid)
        tkp.PrivilegeCount = 1
        tkp.Privileges(0).pLuid = tmpLuid
        tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
        EnablePrivilege = AdjustTokenPrivileges(hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded)
    End Function
      

  2.   

    以上几个函数主要是用于调整进程令牌特权,一般只要会用就行了,一般没必要知道他的明确含义。因为他比较晦涩难懂,介绍它的资料几乎很少很少。
    下面我就简单介绍一下。Const   TOKEN_ADJUST_PRIVILEGES   =   &H20   //调整该进程令牌权限为&H20
    Const   TOKEN_QUERY   =   &H8                //用于查询一个进程的令牌
    Const   SE_PRIVILEGE_ENABLED   =   &H2       //调整进程令牌是否为特权
    Const   ANYSIZE_ARRAY   =   1                //一个数组的长度
    '----------------------------------------------------------------------------------
    Private   Type   LUID                        //特权名字的等价数值叫做LUID,独有标识
        lowpart   As   Long                      //低字节部分
        highpart   As   Long                     //高字节部分
    End   Type  
    '----------------------------------------------------------------------------------
    Private   Type   LUID_AND_ATTRIBUTES         //令牌的LUID和属性
       pLuid   As   LUID                         //特权名字的等价数值叫做LUID,独有标识
       Attributes   As   Long                    //特权属性代码
    End   Type  
    '----------------------------------------------------------------------------------Private   Type   TOKEN_PRIVILEGES            //访问进程令牌每个指定的特权和属性
      PrivilegeCount   As   Long                 // 令牌数量
      Privileges(ANYSIZE_ARRAY)   As   LUID_AND_ATTRIBUTES   //每个令牌特权描述
    End   Type   
    '----------------------------------------------------------------------------------
    OpenProcessToken                            //打开进程令牌环LookupPrivilegeValue                        //返回独一无二的LUID,用于调整令牌权限AdjustTokenPrivileges                       //调整进程令牌权限
      

  3.   

    怎么给你加分?我搞不定,我的密码是weichris,你自己加吧
      

  4.   

    好了我给你了,原来要在你的贴子里把分数写进去,
    还有最后一个函数AdjustTokenPrivileges 的行参我还是不懂,你可以帮我解释一下吗?
      

  5.   

    AdjustTokenPrivileges
    第一个参数是访问令牌的句柄
    第二个参数决定是进行权限修改还是除能( Disable)所有权限
    第三个参数指明要修改的权限,是一个指向 TOKEN_PRIVILEGES 结构的指针,该结构包含一个数组,数据组的每个项指明了权限的类型和要进行的操作 
    第四个参数是结构PreviousState的长度,如果PreviousState为空,该参数应为 NULL 
    第五个参数也是一个 指向 TOKEN_PRIVILEGES 结构的指针,存放修改前的访问权限的信息,可空
    最后一个参数为实际PreviousState