为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

重启、注销、关机windows系统的正确写法(VB代码)

2017-09-30 10页 doc 28KB 17阅读

用户头像

is_263957

暂无简介

举报
重启、注销、关机windows系统的正确写法(VB代码)重启、注销、关机windows系统的正确写法(VB代码) Attribute VB_Name = "System_Shutdown_Module" Option Explicit Private Const EWX_LOGOFF = 0 Private Const EWX_SHUTDOWN = 1 Private Const EWX_REBOOT = 2 Private Const EWX_FORCE = 4 Private Const EWX_POWEROFF = 8 Private Const TOKEN_...
重启、注销、关机windows系统的正确写法(VB代码)
重启、注销、关机windows系统的正确写法(VB代码) Attribute VB_Name = "System_Shutdown_Module" Option Explicit Private Const EWX_LOGOFF = 0 Private Const EWX_SHUTDOWN = 1 Private Const EWX_REBOOT = 2 Private Const EWX_FORCE = 4 Private Const EWX_POWEROFF = 8 Private Const TOKEN_QUERY = &H8 Private Const TOKEN_ADJUST_PRIVILEGES = &H20 Private Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege" Private Const SE_PRIVILEGE_ENABLED = &H2 Private Const ANYSIZE_ARRAY = 1 Private Type LARGE_INTEGER lowpart As Long highpart As Long End Type Private Type LUID_AND_ATTRIBUTES 'pLuid As Luid pLuid As LARGE_INTEGER Attributes As Long End Type Private Type TOKEN_PRIVILEGES PrivilegeCount As Long Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES End Type Private Declare Function LockWorkStation Lib "user32.dll" () As Long Private Declare Function ExitWindows Lib "user32" (ByVal dwReserved As Long, ByVal uReturnCode As Long) As Long Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LARGE_INTEGER) As Long Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long '[[[[[[[[[[ 《重启、注销、关机windows系统的正确写法》 Code by EnVon QQ:407542585 ]]]]]]]]]]]]]] '锁定计算机 Public Function 锁定计算机() As Boolean If LockWorkStation Then 锁定计算机 = True Else 锁定计算机 = False End If End Function '/////////////////////////////////////////////////////////////////////////////// /////// '正常注销计算机 Public Function 正常注销计算机() As Boolean If ExitWindowsEx(EWX_LOGOFF, 0) Then 正常注销计算机 = True Else 正常注销计算机 = False End If End Function '强制注销计算机 Public Function 强制注销计算机() As Boolean If ExitWindowsEx(EWX_FORCE, 0) Then 强制注销计算机 = True Else 强制注销计算机 = False End If End Function '/////////////////////////////////////////////////////////////////////////////// /////// '正常关闭计算机 Public Function 正常关闭计算机() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_SHUTDOWN, 0) Then retB = True End If End If End If 正常关闭计算机 = retB End Function '强制关闭计算机 Public Function 强制关闭计算机() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE, 0) Then retB = True End If End If End If 强制关闭计算机 = retB End Function '/////////////////////////////////////////////////////////////////////////////// /////// '正常关闭电源 Public Function 正常关闭电源() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_POWEROFF, 0) Then retB = True End If End If End If 正常关闭电源 = retB End Function '强制关闭电源 Public Function 强制关闭电源() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_POWEROFF Or EWX_FORCE, 0) Then retB = True End If End If End If 强制关闭电源 = retB End Function '/////////////////////////////////////////////////////////////////////////////// /////// '正常重启计算机 Public Function 正常重启计算机() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_REBOOT, 0) Then retB = True End If End If End If 正常重启计算机 = retB End Function '强制重启计算机 Public Function 强制重启计算机() As Boolean Dim retB As Boolean Dim hProc As Long Dim tkp As TOKEN_PRIVILEGES, tkpLen As Long Dim outTok As TOKEN_PRIVILEGES, outTokLen As Long retB = False If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) Then If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tkp.Privileges(0).pLuid) Then tkp.PrivilegeCount = 1 tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED tkpLen = Len(tkp) If AdjustTokenPrivileges(hProc, False, tkp, tkpLen, outTok, outTokLen) Then If ExitWindowsEx(EWX_REBOOT Or EWX_FORCE, 0) Then retB = True End If End If End If 强制重启计算机 = retB End Function
/
本文档为【重启、注销、关机windows系统的正确写法(VB代码)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索