当前位置: 代码迷 >> 汇编语言 >> 该怎么使用AdjustTokenPrivileges函数获得关机权限
  详细解决方案

该怎么使用AdjustTokenPrivileges函数获得关机权限

热度:3308   发布时间:2013-02-26 00:00:00.0
该如何使用AdjustTokenPrivileges函数获得关机权限
该如何使用AdjustTokenPrivileges函数获得关机权限
在使用AdjustTokenPrivileges获得权限时里面的结构类型该如何填写??
我自己写的程序问题出在;注释处,导致无法编译,请高手帮我看看。谢谢!!
注:我使用的是Win32Masm编辑环境,用   ml   /c   /coff   X:\文件名.asm   命令编译,用
        link   /subsystem:windows   X:\文件名.obj   命令连接。
程序如下:

    .386
    .model   flat,stdcall
    option   casemap:none  
; < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
include     kernel32.inc
includelib     kernel32.lib
include     advapi32.inc
includelib     advapi32.lib
include     windows.inc
include     winmm.inc
includelib     winmm.lib
include     user32.inc
includelib     user32.lib
; < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
    .data
szBuffer     db   64   dup(?)

    .data
szShutDown   db   ‘SeShutdownPrivilege‘,0
; < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <

    .code
AdjustTokenPrivilegesForNT   proc   ;获得关机权限
      local   @stTP1:TOKEN_PRIVILEGES
      local   @stLUIDUID
      local   @hProcessHandle
      local   @hTokenHandle
      local   @Buffer
      local   @stTP2:TOKEN_PRIVILEGES

      invoke   GetCurrentProcess
      mov   @hProcessHandle,eax
      invoke   OpenProcessToken,addr   @hProcessHandle,TOKEN_ADJUST_PRIVILEGES   OR   TOKEN_QUERY,@hTokenHandle
      invoke   LookupPrivilegevalue,NULL,offset   szShutDown,addr   @stLUID
      mov   @stTP1.PrivilegeCount,1
      lea   eax,[@stLUID]

      mov   @stTP1.Privileges(0).pLuid,eax         ;在汇编时总是提示pLuid未定义,请  

                                                                                        高手指点。谢谢!!
      mov   eax,SE_PRIVILEGE_ENABLED
      mov   @stTP1.Privileges(0).Attributes,eax
      invoke   AdjustTokenPrivileges,addr   @hTokenHandle,FALSE,addr   @stTP1,sizeof   @stTP2,addr   @stTP2,@Buffer
      ret
AdjustTokenPrivilegesForNT   endp
;*****************************************************************
ShutDown     proc
    call   AdjustTokenPrivilegesForNT
    invoke   ExitWindowsEx,2,0           ;2为重起
    ret
ShutDown     endp
; < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
  相关解决方案