VB重启开机关机

 
Option   Explicit
Private   Declare   Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long,
 
ByVal DesiredAccess As Long, TokenHandle As LongAs Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (
ByVal lpSystemName As StringByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long,
ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As 
Long
, PreviousState As TOKEN_PRIVILEGES, ReturnLength As LongAs Long
Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2
Private Type LUID
  UsedPart 
As Long
  IgnoredForNowHigh32BitPart 
As Long
End Type
Private Type TOKEN_PRIVILEGES
  PrivilegeCount 
As Long
  TheLuid 
As LUID
  Attributes 
As Long
End Type
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As LongByVal dwReserved
As LongAs Long
Const HELP_CONTENTS = &H3&
Const EWX_WAIT = 16
Const EWX_REBOOT = 2   '重起
Const EWX_LOGOFF = 0   '注销
Const EWX_FORCE = 4    '终止没有响应的进程
Const EWX_SHUTDOWN = 8 '关闭电源

Private Sub Command1_Click()
'重新启动计算机
  ExitWindowsEx EWX_REBOOT, 0
End Sub


Private Sub Command2_Click()
   
'关闭计算机
   ExitWindowsEx EWX_FORCE Or EWX_SHUTDOWN, 0
End Sub


Private Sub Command3_Click()
  
End
End Sub


Private Sub Command4_Click()
  ExitWindowsEx EWX_LOGOFF, 
0
End Sub

Private Sub Form_Load()
  
Dim hProcessHandle As Long
  
Dim hTokenHandle As Long
  
Dim tmpLuid As LUID
  
Dim tkpNew As TOKEN_PRIVILEGES
  
Dim tkpPrevious As TOKEN_PRIVILEGES
  
Dim lBufferNeeded As Long
 
'获取当前进程的一个伪句柄
  hProcessHandle = GetCurrentProcess()
  OpenProcessToken hProcessHandle, TOKEN_ADJUST_PRIVILEGES 
Or TOKEN_QUERY,
hTokenHandle
  LookupPrivilegeValue 
"""SeShutdownPrivilege", tmpLuid
  tkpNew.PrivilegeCount 
= 1
  tkpNew.TheLuid 
= tmpLuid
  tkpNew.Attributes 
= SE_PRIVILEGE_ENABLED
  lBufferNeeded 
= 0
  
'允许当前应用程序有关闭操作系统的权限
  AdjustTokenPrivileges hTokenHandle, False, tkpNew, Len(tkpPrevious), tkpPrevious,
lBufferNeeded
End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值