第步: 声明结构
-----------------------------------------------------------------------
需要声明 3个结:LUID, LUID_AND_ATTRIBUTES, token_privileges
LUID
long lowpart
long highpart
LUID_AND_ATTRIBUTES
luid pLuid
long Attributes
token_privileges
long privilegecount
luid_and_attributes privileges
第 2步: 声明外部扩展
-----------------------------------------------------------------------
FUNCTION ulong ExitWindowsEx(ulong uFlags,ulong dwReserved) LIBRARY "user32.dll"
FUNCTION ulong GetCurrentProcess LIBRARY "kernel32.dll"
FUNCTION ulong LookupPrivilegeValue(ref lpName,ref lpName,ref Luid lpLuid) LIBRARY "advapi32.dll" ALIAS FOR "LookupPrivilegeValueA"
FUNCTION ulong AdjustTokenPrivileges(ulong TokenHandle,boolean DisableAllPrivileges,ref TOKEN_PRIVILEGES NewState,ulong BufferLength,ref TOKEN_PRIVILEGES PreviousState,ref ulong ReturnLength) LIBRARY "advapi32.dll"
FUNCTION ulong OpenProcessToken(ulong ProcessHandle,ulong DesiredAccess,ref ulong TokenHandle) LIBRARY "advapi32.dll"
第 3步: 脚本
-----------------------------------------------------------------------
/*获得关机权限*/
ls_lpName,ls_lpName
ls_lpname='SeShutdownPrivilege'
ulong lu_hdlProcessHandle,lu_hdlTokenHandle,lu_lBufferNeeded
luid lst_tmpLuid
TOKEN_PRIVILEGES lst_tkp
TOKEN_PRIVILEGES lst_tkpNewButIgnored
lu_hdlProcessHandle = GetCurrentProcess
OpenProcessToken(lu_hdlProcessHandle,40, lu_hdlTokenHandle)
LookupPrivilegeValue( ls_lpName, ls_lpname, lst_tmpLuid)
lst_tkp.PrivilegeCount = 1
lst_tkp.Privileges[1].pLuid = lst_tmpLuid
lst_tkp.Privileges[1].Attributes = 2
AdjustTokenPrivileges(lu_hdlTokenHandle, False, lst_tkp,16, lst_tkpNewButIgnored,lu_lBufferNeeded)
/*关机*/
ExitWindowsEx (9,0)
/* The End */
如果您在这篇文章里得到了些什么请给作者些鼓励:[email protected]
最新评论