j'ai un problème sur un script que je n'ai pas écrit. le but de ce script est de savoir depuis combien de temps est démarrée la machine de l'utilisateur. Si elle est démarrée depuis plus de 5 jours, je lui impose un redémarrage (pour des raisons particulières).
Ce script fonctionne très bien sur Windows 7 Pro, or je migre petit à petit mes PC sous Windows 10 ; sur cet OS le script réagit anormalement.
Aujourd'hui par exemple j'ai démarré mon PC, et quelques secondes après le script m'a affiché que mon PC etait démarré depuis plus de 6 jours -> donc redémarrage.
je ne comprends pas bien ce comportement.
Merci à vous.
Code : Tout sélectionner
;FONCTION DEMARRE DEPUIS ...
Func _ComputerGetOSs()
    Local $colItems, $objWMIService, $objItem, $i = 1
    Local $aOSInfo[1]
    $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
    If(Not(IsObj($objWMIService))) Then Return $aOSInfo
    $colItems = $objWMIService.ExecQuery("SELECT Name, BuildNumber, LastBootUpTime, SerialNumber FROM Win32_OperatingSystem", "WQL", 0x10 + 0x20)
    If IsObj($colItems) Then
        For $objItem In $colItems
            ReDim $aOSInfo[UBound($aOSInfo) + 1]
            $aOSInfo[$i] = __StringToDate($objItem.LastBootUpTime)
            $i += 1
        Next
        $aOSInfo[0] = UBound($aOSInfo) - 1
        If $aOSInfo[0] < 1 Then
            SetError(1, 1, 0)
        EndIf
    Else
        SetError(1, 2, 0)
    EndIf
    Return $aOSInfo
EndFunc ;_ComputerGetOSs
Func __StringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
            & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc
Func InverserMoisJour($Texte)
    Return StringMid($Texte, 4, 2) & "/" & StringMid($Texte, 1, 2) & StringTrimLeft($Texte, 5)
EndFunc
Func TimeGetLongFormatBySec($Sec)
    Local $Retour = ""
    Local $Temp
    Local $Compare = 60*60*24
    If($Sec > $Compare Or $Retour <> "") Then
        $Temp = Floor($Sec/($Compare))
        $Retour &= $Temp & " jour"
			; SI PC demarré depuis plus de 3 jours alors popup redemarrage impératif.
				if $Temp >= 5    Then
					MsgBox(16,"ATTENTION !!!","Votre ordinateur n'a pas été redémarré depuis plus de "&$Temp&" jours." & @CRLF _
					& " VOUS DEVEZ IMPERATIVEMENT LE REDEMARRER" &@CRLF &	@CRLF _
					&"Veuillez fermer vos travaux en cours et cliquez sur ""OK""")
					;Shutdown(6)
				EndIf
        If($Temp > 1) Then
            $Retour &= "s"
        EndIf
        $Retour &= " "
        $Sec -= $Temp*$Compare
    EndIf
    $Compare = 60*60
    If($Sec > $Compare Or $Retour <> "") Then
        $Temp = Floor($Sec/($Compare))
        $Retour &= $Temp & " heure"
        If($Temp > 1) Then
            $Retour &= "s"
        EndIf
        $Retour &= " "
        $Sec -= $Temp*$Compare
    EndIf
    $Compare = 60
    If($Sec > $Compare Or $Retour <> "") Then
        $Temp = Floor($Sec/($Compare))
        $Retour &= $Temp & " minute"
        If($Temp > 1) Then
            $Retour &= "s"
        EndIf
        $Retour &= " "
        $Sec -= $Temp*$Compare
    EndIf
    $Compare = 1
;~     If($Sec > $Compare Or $Retour <> "") Then
;~         $Temp = Floor($Sec/($Compare))
;~         $Retour &= $Temp & " seconde"
;~         If($Temp > 1) Then
;~             $Retour &= "s"
;~         EndIf
;~         $Retour &= " "
;~         $Sec -= $Temp*$Compare
;~     EndIf
    Return $Retour
EndFunc
Func GetSecByStringDate($time)
    Return  Number(StringMid($time, 7, 4))*31536000 + _
            Number(StringLeft($time, 2))*86400 + _
            Number(StringMid($time, 4, 2))*2678400 + _
            Number(StringMid($time, 12, 2))*3600 + _
            Number(StringMid($time, 15, 2))*60 + _
            Number(StringRight($time, 2))
EndFunc





 
 


 
 


