Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460

    riavvio shutdown per win9x e 2k-xp

    come si fa a far riavvare o spegnere il pc in una maniera compatibile a windows 98,me,xp,2000 ?
    ho trovato un'api in giro ma con 2000 non va..

    uso vb6 ;o

  2. #2

    ...

    io conosco la rundll.exe, exit windows
    non so se funziona con 2000

  3. #3
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  4. #4
    Utente di HTML.it L'avatar di seclimar
    Registrato dal
    Sep 2002
    Messaggi
    21,042
    con i sistemi NT (2000 xp) c'e' il comando shutdown!
    da dos...


    mi ricordo che una volta avevamo scritto un'applicazione del genere che pero' differenziava tra il 98 e il NT
    e questo appunto perche' non avevamo trovato nessun comando

    al limite prova le cose che ti hanno suggerito prima..
    pero' con i permessi di amministratore del pc!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460
    shutdown non lo riconosce come comando il mio pc

    uso win2k

  6. #6
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    provate e fatemi sapere gente
    codice:
    Declare Function ExitWindowsEx& Lib "user32" _
        (ByVal uFlags&, ByVal wReserved&)
    ' Le costanti
    Global Const EWX_LOGOFF = 0   ' Chiude la sessione
    Global Const EWX_SHUTDOWN = 1 ' Chiude il sistema
    Global Const EWX_REBOOT = 2   ' Riavvia il sistema
    Global Const EWX_FORCE = 4    ' Chiude eventuali applicazioni aperte
    Global Const EWX_POWEROFF = 8 ' Solo in PII ATX
    'Adesso puoi chiamare uno ShutDown/un Reboot/un Logoff
    'con questa chiamata
    lresult = ExitWindowsEx(EWX_SHUTDOWN, 0&)
    'shutdown del computer

  7. #7
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Originariamente inviato da seclimar
    con i sistemi NT (2000 xp) c'e' il comando shutdown!
    da dos...


    mi ricordo che una volta avevamo scritto un'applicazione del genere che pero' differenziava tra il 98 e il NT
    e questo appunto perche' non avevamo trovato nessun comando

    al limite prova le cose che ti hanno suggerito prima..
    pero' con i permessi di amministratore del pc!
    Viene installato soltanto se installi i tools di amministrazione di windows 2k, che non sono inseriti di default, ma li trovi nel cd di installazione di windows

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  8. #8
    su nt 2000 bisogna prima ottenere i token privilege
    per farlo su sistemi NT

    codice:
    Private Const EWX_LOGOFF = 0
    Private Const EWX_SHUTDOWN = 1
    Private Const EWX_REBOOT = 2
    Private Const EWX_FORCE = 4
    Private Const SE_PRIVILEGE_ENABLED = &H2
    Private Const TokenPrivileges = 3
    Private Const TOKEN_ASSIGN_PRIMARY = &H1
    Private Const TOKEN_DUPLICATE = &H2
    Private Const TOKEN_IMPERSONATE = &H4
    Private Const TOKEN_QUERY = &H8
    Private Const TOKEN_QUERY_SOURCE = &H10
    Private Const TOKEN_ADJUST_PRIVILEGES = &H20
    Private Const TOKEN_ADJUST_GROUPS = &H40
    Private Const TOKEN_ADJUST_DEFAULT = &H80
    Private Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
    Private 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 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 Boolean = False, _
      Optional Restart As Boolean = False, _
      Optional Message As String = "") 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 InStr(Machine, "\\") = 1 Then
            Machine = Right(Machine, Len(Machine) - 2)
        End If
    
        If (LCase(GetNomeComputer) = LCase(Machine)) Then
    
            If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hProc) = 0 Then
                MsgBox "Errore: " & GetLastError()
                Exit Function
            End If
    
            If LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, OldTokenStuff.Privileges(0).pLuid) = 0 Then
                MsgBox "Errore: " & GetLastError()
                Exit Function
            End If
            NewTokenStuff = OldTokenStuff
            NewTokenStuff.PrivilegeCount = 1
            NewTokenStuff.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
            NewTokenStuffLen = Len(NewTokenStuff)
            pSize = Len(NewTokenStuff)
    
            If AdjustTokenPrivileges(hProc, False, NewTokenStuff, NewTokenStuffLen, OldTokenStuff, OldTokenStuffLen) = 0 Then
                MsgBox "Errore: " & GetLastError()
                Exit Function
            End If
    
            If InitiateSystemShutdown("\\" & Machine, Message, Delay, Force, Restart) = 0 Then
                Exit Function
            End If
            NewTokenStuff.Privileges(0).Attributes = 0
    
            If AdjustTokenPrivileges(hProc, False, NewTokenStuff, Len(NewTokenStuff), OldTokenStuff, Len(OldTokenStuff)) = 0 Then
                Exit Function
            End If
        Else
    
            If InitiateSystemShutdown("\\" & Machine, Message, Delay, Force, Restart) = 0 Then
                Exit Function
            End If
        End If
        InitiateShutdownMachine = True
    End Function
    
    Public Function GetNomeComputer() As String
        Dim sLen As Long
        sLen = 255
        GetNomeComputer = Space(sLen)
        
        If GetComputerName(GetNomeComputer, sLen) Then
            GetNomeComputer = Left$(GetNomeComputer, sLen)
            GetNomeComputer = Trim$(GetNomeComputer)
        End If
    End Function
    salvare prima di provare funziona davvero
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    Per spegnere il pc ho trovato:
    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    Private Sub Command1_Click()
    ExitWindowsEx 15, 0
    End Sub
    Solo che con Win Xp non funzionava poi ho creato il file .exe ed ho usato la funzione "esegui il programma in modalità compatibile con Win 95" di Win Xp e mi funziona solo che l'ho dovuto impostare manualmente. Se qlc1 sa come modificarla tramite codice l'impostazione di compatibilità...
    Ps. fatemi sapere se funziona con i fratelli di Xp
    CIAO

  10. #10
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Confermo che il codice inviato da xegallo funziona su xp...
    Una cosa però con capisco: perchè non si riesce mai a far spegnere il computer completamente. Quando si fa chiudi sessione il pc si spegne, mentre da codice resta accesso con la scritta "Ora è possibile spegnere il computer". Non c'è un sistema per farlo spegnere del tutto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.