hallow all
earlier i posted a question about shutingdown a computer.
there was someone who helped me with the code? i don't know anymore who he
was.
i remember there was an error in the code, and i had to add a couple of
lines.
i've forgot to save this fixed module meightbe you can help me again giving
me the code to add.
here is the code:(not working)
Private Declare Function GetCurrentProce ss Lib "kernel32" () As Long
Private Declare Function OpenProcessToke n Lib "advapi32" ( _
ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long
Private Declare Function LookupPrivilege Value Lib "advapi32" _
Alias "LookupPrivileg eValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPriv ileges Lib "advapi32" ( _
ByVal TokenHandle As Long, ByVal DisableAllPrivi leges As Long, _
NewState As TOKEN_PRIVILEGE S, ByVal BufferLength As Long, _
PreviousState As TOKEN_PRIVILEGE S, ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As _
Long, ByVal dwReserved As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias _
"GetVersion ExA" (ByRef lpVersionInform ation As OSVERSIONINFO) _
As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const EWX_POWEROFF = 8
Public Const EWX_FORCEIFHUNG = 16
Private Const TOKEN_QUERY = 8
Private Const TOKEN_ADJUST_PR IVILEGES = 32
Private Const SE_PRIVILEGE_EN ABLED = 2
Private Const ANYSIZE_ARRAY = 1
Private Const VER_PLATFORM_WI N32_NT = 2
Type OSVERSIONINFO
dwOSVersionInfo Size As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Type LUID
LowPart As Long
HighPart As Long
End Type
Public Type LUID_AND_ATTRIB UTES
pLuid As LUID
Attributes As Long
End Type
Public Type TOKEN_PRIVILEGE S
PrivilegeCount As Long
Privileges(ANYS IZE_ARRAY) As LUID_AND_ATTRIB UTES
End Type
Public Sub quitWindows(whi ch As Long)
Dim n As Long
If IsWinNT Then EnableShutDown
n = ExitWindowsEx(w hich, &HFFFF) '((which Or EWX_FORCE), &HFFFF)
If n Then
Dim x As String * 256
FormatMessage FORMAT_MESSAGE_ FROM_SYSTEM, 0, Err.LastDllErro r, _
0, x, 256, 0
Else
Unload frmBackground
End If
End Sub
Public Function IsWinNT() As Boolean
' Detect if the program is running under Windows NT
Dim myOS As OSVERSIONINFO
myOS.dwOSVersio nInfoSize = Len(myOS)
GetVersionEx myOS
IsWinNT = (myOS.dwPlatfor mId = VER_PLATFORM_WI N32_NT)
End Function
Private Sub EnableShutDown( )
' Set the shut down privilege for the current application
Dim hProc As Long, hToken As Long, mLUID As LUID
Dim mPriv As TOKEN_PRIVILEGE S, mNewPriv As TOKEN_PRIVILEGE S
hProc = GetCurrentProce ss()
OpenProcessToke n hProc, TOKEN_ADJUST_PR IVILEGES + TOKEN_QUERY, _
hToken
LookupPrivilege Value "", "SeShutdownPriv ilege", mLUID
mPriv.Privilege Count = 1
mPriv.Privilege s(0).Attributes = SE_PRIVILEGE_EN ABLED
mPriv.Privilege s(0).pLuid = mLUID
' enable shutdown privilege for the current application
AdjustTokenPriv ileges hToken, False, mPriv, 4 + (12 * _
mPriv.Privilege Count), mNewPriv, 4 + (12 * _
mNewPriv.Privil egeCount)
End Sub
kind regards Maarten
earlier i posted a question about shutingdown a computer.
there was someone who helped me with the code? i don't know anymore who he
was.
i remember there was an error in the code, and i had to add a couple of
lines.
i've forgot to save this fixed module meightbe you can help me again giving
me the code to add.
here is the code:(not working)
Private Declare Function GetCurrentProce ss Lib "kernel32" () As Long
Private Declare Function OpenProcessToke n Lib "advapi32" ( _
ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long
Private Declare Function LookupPrivilege Value Lib "advapi32" _
Alias "LookupPrivileg eValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPriv ileges Lib "advapi32" ( _
ByVal TokenHandle As Long, ByVal DisableAllPrivi leges As Long, _
NewState As TOKEN_PRIVILEGE S, ByVal BufferLength As Long, _
PreviousState As TOKEN_PRIVILEGE S, ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As _
Long, ByVal dwReserved As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias _
"GetVersion ExA" (ByRef lpVersionInform ation As OSVERSIONINFO) _
As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const EWX_POWEROFF = 8
Public Const EWX_FORCEIFHUNG = 16
Private Const TOKEN_QUERY = 8
Private Const TOKEN_ADJUST_PR IVILEGES = 32
Private Const SE_PRIVILEGE_EN ABLED = 2
Private Const ANYSIZE_ARRAY = 1
Private Const VER_PLATFORM_WI N32_NT = 2
Type OSVERSIONINFO
dwOSVersionInfo Size As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Type LUID
LowPart As Long
HighPart As Long
End Type
Public Type LUID_AND_ATTRIB UTES
pLuid As LUID
Attributes As Long
End Type
Public Type TOKEN_PRIVILEGE S
PrivilegeCount As Long
Privileges(ANYS IZE_ARRAY) As LUID_AND_ATTRIB UTES
End Type
Public Sub quitWindows(whi ch As Long)
Dim n As Long
If IsWinNT Then EnableShutDown
n = ExitWindowsEx(w hich, &HFFFF) '((which Or EWX_FORCE), &HFFFF)
If n Then
Dim x As String * 256
FormatMessage FORMAT_MESSAGE_ FROM_SYSTEM, 0, Err.LastDllErro r, _
0, x, 256, 0
Else
Unload frmBackground
End If
End Sub
Public Function IsWinNT() As Boolean
' Detect if the program is running under Windows NT
Dim myOS As OSVERSIONINFO
myOS.dwOSVersio nInfoSize = Len(myOS)
GetVersionEx myOS
IsWinNT = (myOS.dwPlatfor mId = VER_PLATFORM_WI N32_NT)
End Function
Private Sub EnableShutDown( )
' Set the shut down privilege for the current application
Dim hProc As Long, hToken As Long, mLUID As LUID
Dim mPriv As TOKEN_PRIVILEGE S, mNewPriv As TOKEN_PRIVILEGE S
hProc = GetCurrentProce ss()
OpenProcessToke n hProc, TOKEN_ADJUST_PR IVILEGES + TOKEN_QUERY, _
hToken
LookupPrivilege Value "", "SeShutdownPriv ilege", mLUID
mPriv.Privilege Count = 1
mPriv.Privilege s(0).Attributes = SE_PRIVILEGE_EN ABLED
mPriv.Privilege s(0).pLuid = mLUID
' enable shutdown privilege for the current application
AdjustTokenPriv ileges hToken, False, mPriv, 4 + (12 * _
mPriv.Privilege Count), mNewPriv, 4 + (12 * _
mNewPriv.Privil egeCount)
End Sub
kind regards Maarten
Comment