lpyzr
asked on
Reboot Computer in VB6 (Visual Basic)
Ok heres a simple one.
Here is what im doing for log off:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Const EWX_LOGOFF = 0
Private Const EWX_REBOOT = 2
Private Sub lnkLogOff_Click()
ExitWindowsEx EWX_LOGOFF, 0
End Sub
Private Sub lnkRestart_Click()
ExitWindowsEx EWX_REBOOT, 0
End Sub
Reboot doesn't work... what is up? Ive seen this post countless times, but the reboot feature doesn't work! it only logs me off! Any ideas?
Here is what im doing for log off:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Const EWX_LOGOFF = 0
Private Const EWX_REBOOT = 2
Private Sub lnkLogOff_Click()
ExitWindowsEx EWX_LOGOFF, 0
End Sub
Private Sub lnkRestart_Click()
ExitWindowsEx EWX_REBOOT, 0
End Sub
Reboot doesn't work... what is up? Ive seen this post countless times, but the reboot feature doesn't work! it only logs me off! Any ideas?
Try
Public Const EWX_SHUTDOWN = 1
Public Const EWX_SHUTDOWN = 1
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Private Const TOKEN_ADJUST_PRIVILEGES As Long = &H20
Private Const TOKEN_QUERY As Long = &H8
Private Const SE_PRIVILEGE_ENABLED As Long = &H2
Private Const EWX_LOGOFF As Long = &H0
Private Const EWX_SHUTDOWN As Long = &H1
Private Const EWX_REBOOT As Long = &H2
Private Const EWX_FORCE As Long = &H4
Private Const EWX_POWEROFF As Long = &H8
Private Const VER_PLATFORM_WIN32_NT As Long = 2
Private Type OSVERSIONINFO
OSVSize As Long
dwVerMajor As Long
dwVerMinor As Long
dwBuildNumber As Long
PlatformID As Long
szCSDVersion As String * 128
End Type
Private Type LUID
dwLowPart As Long
dwHighPart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
udtLUID As LUID
dwAttributes As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
laa As LUID_AND_ATTRIBUTES
End Type
Private Declare Function ExitWindowsEx Lib "user32" _
(ByVal dwOptions As Long, _
ByVal dwReserved As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" _
(ByVal ProcessHandle As Long, _
ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias "LookupPrivilegeValueA" _
(ByVal lpSystemName As String, _
ByVal 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 Any, _
ReturnLength As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Private Function IsWinNTPlus() As Boolean
#If Win32 Then
Dim OSV As OSVERSIONINFO
OSV.OSVSize = Len(OSV)
If GetVersionEx(OSV) = 1 Then
IsWinNTPlus = (OSV.PlatformID = VER_PLATFORM_WIN32_NT) And _
(OSV.dwVerMajor >= 4)
End If
#End If
End Function
Private Function EnableShutdownPrivledges()
Dim hProcessHandle As Long
Dim hTokenHandle As Long
Dim lpv_la As LUID
Dim token As TOKEN_PRIVILEGES
hProcessHandle = GetCurrentProcess()
If hProcessHandle <> 0 Then
If OpenProcessToken(hProcessH
If LookupPrivilegeValue(vbNul
With token
.PrivilegeCount = 1
.laa.udtLUID = lpv_la
.laa.dwAttributes = SE_PRIVILEGE_ENABLED
End With
If AdjustTokenPrivileges(hTok
EnableShutdownPrivledges = True
End If
End If
End If
End If
End Function
Private Sub Command1_Click()
Dim uflags As Long
Dim success As Long
'force shutdown
uflags = EWX_FORCE
If IsWinNTPlus() Then
success = EnableShutdownPrivledges()
If success Then Call ExitWindowsEx(uflags, 0&)
Else
Call ExitWindowsEx(uflags, 0&)
End If
End Sub
Private Sub Command2_Click()
Dim uflags As Long
Dim success As Long
'log off
uflags = EWX_LOGOFF
If IsWinNTPlus() Then
success = EnableShutdownPrivledges()
If success Then Call ExitWindowsEx(uflags, 0&)
Else
Call ExitWindowsEx(uflags, 0&)
End If
End Sub
Private Sub Command3_Click()
Dim uflags As Long
Dim success As Long
'shut down
uflags = EWX_SHUTDOWN
If IsWinNTPlus() Then
success = EnableShutdownPrivledges()
If success Then Call ExitWindowsEx(uflags, 0&)
Else
Call ExitWindowsEx(uflags, 0&)
End If
End Sub
Private Sub Command4_Click()
Dim uflags As Long
Dim success As Long
'reboot
uflags = EWX_REBOOT
If IsWinNTPlus() Then
success = EnableShutdownPrivledges()
If success Then Call ExitWindowsEx(uflags, 0&)
Else
Call ExitWindowsEx(uflags, 0&)
End If
End Sub
Private Sub Command5_Click()
Dim uflags As Long
Dim success As Long
'power off za gasenje windowsa
uflags = EWX_POWEROFF
If IsWinNTPlus() Then
success = EnableShutdownPrivledges()
If success Then Call ExitWindowsEx(uflags, 0&)
Else
Call ExitWindowsEx(uflags, 0&)
End If
End Sub