Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

shut down windows

  • 15-03-2000 1:13pm
    #1
    Registered Users, Registered Users 2 Posts: 2,660 ✭✭✭


    Does anyone know how to shut down windows with a vb program, ie the code.

    There I've changed it okay


Comments

  • Closed Accounts Posts: 7,346 ✭✭✭Rev Hellfire


    Start a new Standard EXE project. Form1 is added by default.


    Add a CommandButton (named cmdForceShutdown) to Form1.


    Add the following code to the General Declarations section of Form1:


    Option Explicit

    Private Type LUID
    UsedPart As Long
    IgnoredForNowHigh32BitPart As Long
    End Type

    Private Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    TheLuid As LUID
    Attributes As Long
    End Type

    ' Beginning of Code
    Private Const EWX_SHUTDOWN As Long = 1
    Private Const EWX_FORCE As Long = 4
    Private Const EWX_REBOOT = 2

    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 TOKEN_PRIVILEGES, ReturnLength As Long) As Long
    Private 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

    hdlProcessHandle = GetCurrentProcess()
    OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
    TOKEN_QUERY), hdlTokenHandle

    ' Get the LUID for shutdown privilege.
    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid

    tkp.PrivilegeCount = 1 ' One privilege to set
    tkp.TheLuid = tmpLuid
    tkp.Attributes = SE_PRIVILEGE_ENABLED

    ' Enable the shutdown privilege in the access token of this
    ' process.
    AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
    Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded

    End Sub

    Private Sub cmdForceShutdown_Click()
    AdjustToken
    ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF
    End Sub




  • Closed Accounts Posts: 232 ✭✭Gamblor


    I find the start button and choosing the shut down Button !!!!

    ***** Feel my Evil Neon Claws *****


  • Registered Users, Registered Users 2 Posts: 3,744 ✭✭✭deRanged


    now on linux that'd only take one line of code smile.gif


  • Registered Users, Registered Users 2 Posts: 2,494 ✭✭✭kayos


    Good God Hellfire where did you learn your API's

    try this much smaller piece of code

    'In general section
    Const EWX_LOGOFF = 0
    Const EWX_SHUTDOWN = 1
    Const EWX_REBOOT = 2
    Const EWX_FORCE = 4
    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    Private Sub Form_Load()
    msg = MsgBox("This program is going to reboot your computer. Press OK to continue or Cancel to stop.", vbCritical + vbOKCancel + 256, App.Title)
    If msg = vbCancel Then End
    'reboot the computer
    ret& = ExitWindowsEx(EWX_FORCE Or EWX_REBOOT, 0)
    End Sub



  • Closed Accounts Posts: 7,346 ✭✭✭Rev Hellfire


    Hee hee
    I didn't, that my friend is one hundred percent microsoft code, just did a search in the 'ol MSDN and posted the stuff here.

    In futuure I'll include a disclaimer.


  • Advertisement
  • Closed Accounts Posts: 7,346 ✭✭✭Rev Hellfire


    opps, plus my code works on NT as well as win9x. you need to set the SE_SHUTDOWN_NAME privilege tongue.gif


  • Registered Users, Registered Users 2 Posts: 20,099 ✭✭✭✭WhiteWashMan


    bah, i knew they over paid you ver there in texas smile.gif
    couldnt even come up with the goods yerself eh?
    i challenge you to a VBscript writing duel.

    you...me...and a couple of notepads....TYPE!


  • Closed Accounts Posts: 7,346 ✭✭✭Rev Hellfire


    Haaa over paid never!

    btw when I say when are you going to collect your 100 ciggies I got you in Israel, you really must keep up with me job's.


  • Registered Users, Registered Users 2 Posts: 20,099 ✭✭✭✭WhiteWashMan


    woops!
    well if youre in town on saturday at about 5 and are willing to bear my company for a pint or two....


Advertisement