Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Перезагрузка... Добавлено: 21.12.02 10:51  

Автор вопроса:  Sergey M.

Кодато давно на НТ4 удавалось перегрузить комп так :

ExitWindowsEx(2, 0), а ща (вынь2000) почемуто не работает,

нашел тут на сайте пример, сдул его в свой модуль - неработает,

поноварочено там тока ....но в итоге то делает тоже самое, может

кто подскажет где грабли?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 paul_sn



Вопросов: 16
Ответов: 164
 Web-сайт: sergeyev.zzn.com
 Профиль | | #1
Добавлено: 21.12.02 13:27

Код модуля

Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const ANYSIZE_ARRAY = 1
Private Const VER_PLATFORM_WIN32_NT = 2
Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
Type LUID
    LowPart As Long
    HighPart As Long
End Type
Type LUID_AND_ATTRIBUTES
    pLuid As LUID
    Attributes As Long
End Type
Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
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 TOKEN_PRIVILEGES, _
    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 "GetVersionExA" (ByRef lpVersionInformation As _
    OSVERSIONINFO) As Long

Public Function IsWinNT() As Boolean
    Dim myOS  As OSVERSIONINFO
    myOS.dwOSVersionInfoSize = Len(myOS)
    GetVersionEx myOS
    IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function

Private Sub EnableShutDown()
    Dim hProc As Long
    Dim hToken As Long
    Dim mLUID As LUID
    Dim mPriv As TOKEN_PRIVILEGES
    Dim mNewPriv As TOKEN_PRIVILEGES
    hProc = GetCurrentProcess()
    OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken
    LookupPrivilegeValue "", "SeShutdownPrivilege", mLUID
    mPriv.PrivilegeCount = 1
    mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
    mPriv.Privileges(0).pLuid = mLUID
    AdjustTokenPrivileges hToken, False, mPriv, _
       4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + _
       (12 * mNewPriv.PrivilegeCount)
End Sub

Public Sub ShutDownNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_SHUTDOWN
    If Force Then Flags = Flags + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx Flags, 0
End Sub

Public Sub RebootNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_REBOOT
    If Force Then Flags = Flags + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx Flags, 0
End Sub

Public Sub LogOffNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_LOGOFF
    If Force Then Flags = Flags + EWX_FORCE
    ExitWindowsEx Flags, 0
End Sub

А в форме просто вызываешь нужную тебе функцию

ShutDownNT True

RebootNT True

LogOffNT True

Ответить

Номер ответа: 2
Автор ответа:
 Sergey M.



Вопросов: 9
Ответов: 68
 Профиль | | #2 Добавлено: 23.12.02 07:05

Спасибо, работает, вот только при выключении почемуто не выключается, а выкидывает табличку, что теперь комп можно выключить....

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам