Find Code:
All Words
Any of the Words
Exact Phrase
Home
:
Code
:
Forums
:
Submit
:
Mailing List
:
About
:
Contact
Code
All
VB.NET
ASP.NET
C#
VB Classic
ASP Classic
Snippets
Popular
Resources
Submit Code
Forums
Articles
Tips
Links
Books
Contest
Link to us
API function call (ExitWindowsEx) to shut down win...
Author:
RJ Soft of West Tennessee
E-mail:
Click to e-mail author
Submitted:
4/1/2000
Version:
VB6
Compatibility:
VB6
Category:
Windows API
Views:
21447
API function call (ExitWindowsEx) to shut down windows95/98/NT operating systems from your application.
Declarations:
'Module (Module1.bas) '-----CONSTANT DECLARATION----- Public Const EWX_LogOff As Long = 0 Public Const EWX_SHUTDOWN As Long = 1 Public Const EWX_REBOOT As Long = 2 Public Const EWX_FORCE As Long = 4 Public Const EWX_POWEROFF As Long = 8 Public Const mlngWindows95 = 0 Public Const mlngWindowsNT = 1 '-----FUNCTION DECLARATION----- Public Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long Public Declare Function GetVersion Lib "kernel32" () As Long Public Declare Function GetLastError Lib "kernel32" () As Long Public Declare Function GetCurrentProcess Lib "kernel32" () As Long Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long Public 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 Long) As Long '-----TYPE DECLARATIONS----- Public Type LUID UsedPart As Long IgnoredForNowHigh32BitPart As Long End Type Public Type LUID_AND_ATTRIBUTES TheLuid As LUID Attributes As Long End Type Public Type TOKEN_PRIVILEGES PrivilegeCount As Long TheLuid As LUID Attributes As Long End Type
Code:
'-----MISC. DECLARATIONS----- Public glngWhichWindows32 As Long Public Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long) 'Sub to Adjust Tokens if you are running WindowsNT Public Sub AdjustToken() Const TOKEN_ADJUST_PRIVILEGES = &H20 Const TOKEN_QUERY = &H8 Const SE_PRIVILEGE_ENABLED = &H2 Dim hdlProcessHandle As Long Dim hdlTokenHandle As Long Dim tmpLuid As LUID Dim tkp As TOKEN_PRIVILEGES Dim tkpNewButIgnored As TOKEN_PRIVILEGES Dim lBufferNeeded As Long SetLastError 0 hdlProcessHandle = GetCurrentProcess() If GetLastError <> 0 Then 'MsgBox "GetCurrentProcess error==" & GetLastError End If OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle If GetLastError <> 0 Then 'MsgBox "OpenProcessToken error==" & GetLastError End If LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid If GetLastError <> 0 Then 'MsgBox "LookupPrivilegeValue error==" & GetLastError End If tkp.PrivilegeCount = 1 tkp.TheLuid = tmpLuid tkp.Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded If GetLastError <> 0 Then 'MsgBox "AdjustTokenPrivileges error==" & GetLastError End If End Sub 'Goes into your SUB_LOAD Private Sub Form_Load() Dim lngVersion As Long 'Get current version of Windows lngVersion = GetVersion() 'Checks to see if you are running NT If ((lngVersion And &H80000000) = 0) Then glngWhichWindows32 = mlngWindowsNT Else glngWhichWindows32 = mlngWindows95 End If End Sub 'Create a button called btnReboot Private Sub btnReboot_Click() 'Checks to see if you are running NT If glngWhichWindows32 = mlngWindowsNT Then AdjustToken 'Forces the computer to reboot ExitWindowsEx EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT, &HFFFF End Sub
Home
|
Forums
|
Submit
|
Books
|
Mailing List
|
Advertising
|
About
|
Contact
© 2024 A1VBCode. All rights reserved.
Legal disclaimer & terms of use
Privacy statement