Hallo,
Würde gerne wissen, wie man den PC
unter (Win.98, 2000 und XP)
per cmdEnde - Klick
ohne Nachfrage des Rechners herunterfährt
Danke im vorraus
Udo
PS: Also ich meine den VB6 Code, und net wie ich auf Start … klicke
Hallo,
Würde gerne wissen, wie man den PC
unter (Win.98, 2000 und XP)
per cmdEnde - Klick
ohne Nachfrage des Rechners herunterfährt
Danke im vorraus
Udo
PS: Also ich meine den VB6 Code, und net wie ich auf Start … klicke
Hallo,
ich habe Dir mal den Beispielcode aus der API-Guide kopiert.
' Shutdown Flags
Const EWX\_LOGOFF = 0
Const EWX\_SHUTDOWN = 1
Const EWX\_REBOOT = 2
Const EWX\_FORCE = 4
Const SE\_PRIVILEGE\_ENABLED = &H2
Const TokenPrivileges = 3
Const TOKEN\_ASSIGN\_PRIMARY = &H1
Const TOKEN\_DUPLICATE = &H2
Const TOKEN\_IMPERSONATE = &H4
Const TOKEN\_QUERY = &H8
Const TOKEN\_QUERY\_SOURCE = &H10
Const TOKEN\_ADJUST\_PRIVILEGES = &H20
Const TOKEN\_ADJUST\_GROUPS = &H40
Const TOKEN\_ADJUST\_DEFAULT = &H80
Const SE\_SHUTDOWN\_NAME = "SeShutdownPrivilege"
Const ANYSIZE\_ARRAY = 1
Private Type LARGE\_INTEGER
lowpart As Long
highpart As Long
End Type
Private Type Luid
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 InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown 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
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Public Function InitiateShutdownMachine(ByVal Machine As String, Optional Force As Variant, Optional Restart As Variant, Optional AllowLocalShutdown As Variant, Optional Delay As Variant, Optional Message As Variant) As Boolean
Dim hProc As Long
Dim OldTokenStuff As TOKEN\_PRIVILEGES
Dim OldTokenStuffLen As Long
Dim NewTokenStuff As TOKEN\_PRIVILEGES
Dim NewTokenStuffLen As Long
Dim pSize As Long
If IsMissing(Force) Then Force = False
If IsMissing(Restart) Then Restart = True
If IsMissing(AllowLocalShutdown) Then AllowLocalShutdown = False
If IsMissing(Delay) Then Delay = 0
If IsMissing(Message) Then Message = ""
'Make sure the Machine-name doesn't start with '\\'
If InStr(Machine, "\\") = 1 Then
Machine = Right(Machine, Len(Machine) - 2)
End If
'check if it's the local machine that's going to be shutdown
If (LCase(GetMyMachineName) = LCase(Machine)) Then
'may we shut this computer down?
If AllowLocalShutdown = False Then Exit Function
'open access token
If OpenProcessToken(GetCurrentProcess(), TOKEN\_ADJUST\_PRIVILEGES Or TOKEN\_QUERY, hProc) = 0 Then
MsgBox "OpenProcessToken Error: " & GetLastError()
Exit Function
End If
'retrieve the locally unique identifier to represent the Shutdown-privilege name
If LookupPrivilegeValue(vbNullString, SE\_SHUTDOWN\_NAME, OldTokenStuff.Privileges(0).pLuid) = 0 Then
MsgBox "LookupPrivilegeValue Error: " & GetLastError()
Exit Function
End If
NewTokenStuff = OldTokenStuff
NewTokenStuff.PrivilegeCount = 1
NewTokenStuff.Privileges(0).Attributes = SE\_PRIVILEGE\_ENABLED
NewTokenStuffLen = Len(NewTokenStuff)
pSize = Len(NewTokenStuff)
'Enable shutdown-privilege
If AdjustTokenPrivileges(hProc, False, NewTokenStuff, NewTokenStuffLen, OldTokenStuff, OldTokenStuffLen) = 0 Then
MsgBox "AdjustTokenPrivileges Error: " & GetLastError()
Exit Function
End If
'initiate the system shutdown
If InitiateSystemShutdown("\\" & Machine, Message, Delay, Force, Restart) = 0 Then
Exit Function
End If
NewTokenStuff.Privileges(0).Attributes = 0
'Disable shutdown-privilege
If AdjustTokenPrivileges(hProc, False, NewTokenStuff, Len(NewTokenStuff), OldTokenStuff, Len(OldTokenStuff)) = 0 Then
Exit Function
End If
Else
'initiate the system shutdown
If InitiateSystemShutdown("\\" & Machine, Message, Delay, Force, Restart) = 0 Then
Exit Function
End If
End If
InitiateShutdownMachine = True
End Function
Function GetMyMachineName() As String
Dim sLen As Long
'create a buffer
GetMyMachineName = Space(100)
sLen = 100
'retrieve the computer name
If GetComputerName(GetMyMachineName, sLen) Then
GetMyMachineName = Left(GetMyMachineName, sLen)
End If
End Function
Private Sub Form\_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: [email protected]
InitiateShutdownMachine GetMyMachineName, True, True, True, 60, "You initiated a system shutdown..."
End Sub
… oder so
Public Function FktShutdown(intQuit As Integer)
’ 4 = logoff
’ 5 = shutdown
’ 6 = reboot
’ 12 = power off
Dim oSys, oSysSet
Set oSysSet = GetObject(„winmgmts:{(Shutdown)}//./root/cimv2“).ExecQuery(„select * from Win32_OperatingSystem where Primary=true“)
For Each oSys In oSysSet
oSys.Win32ShutDown (intQuit)
Next
End Function