Convertir le ShutdownTime

mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011 - 21 juil. 2011 à 22:13
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011 - 22 août 2011 à 21:59
Bonjour,

j'aimerais convertir ce code vbs en php svp :
et remplacer la pioche dans la bdr strValueName par la valeur directement dans le code php
strValueName = "123456789ABCDEF0"
merci

strValueName = "HKLM\SYSTEM\CurrentControlSet\Control\Windows" _
& "ShutdownTime"
Set oShell = CreateObject("WScript.Shell")
Ar = oShell.RegRead(strValueName)
Term = Ar(7)*(2^56) + Ar(6)*(2^48) + Ar(5)*(2^40) + Ar(4)*(2^32) _
+ Ar(3)*(2^24) + Ar(2)*(2^16) + Ar(1)*(2^8) + Ar(0)
Days = Term/(1E7*86400)
WScript.Echo "ShutdownTime = " & CDate(DateSerial(1601, 1, 1) + Days)

44 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
21 juil. 2011 à 22:27
Bonjour,

Peux-tu exprimer en français ce que tu souhaite ?
D'après ce que j'ai compris, tu as une chaine représentant un nombre au format Hexadécimal et tu voudrais en déduire une date à partir du 01/01/1601.
J'ai bon ?

Conversion : http://www.phpcs.com/codes/CONVERTISSEUR-HEXADECIMAL-DECIMAL-BINAIRE_21169.aspx
Sinon pour la date, je te laisse chercher, car c'est très documenté.

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
23 juil. 2011 à 00:30
oui tout à fait
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 juil. 2011 à 16:49
Bonjour,

Donc, quel(s) est(sont) le(s) point(s) qui pose(nt) encore problème ?

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
23 juil. 2011 à 16:51
Je ne sais pas du tout coder... c'est pour çà que j'ai formuler une demande sur ce forum, çà doit etre un jeu d'enfant pour vous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 juil. 2011 à 17:03
Bonjour,

Ici, on aide sur des problèmes de code en général, on en code pas pour les autres.

Dan,s ton cas, il faut que tu commences à comprendre comment coder en PHP et tester des scripts de base

Ensuite, tu verras comment agencer les 2 éléments de mon message du 21/07.

Je ne code que rarement avec PHP et actuellement, je n'ai pas le temps de faire un exemple et je n'ai pas de moyen de test approprié.

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
23 juil. 2011 à 18:51
c'est pour integrer au glpi que j'ai mis en place dans ma boite, je connais les base du php, mais je vais y passer 15 jours...
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
23 juil. 2011 à 19:41
Salut,

Moi je veux convertir le firmware de mon plasma 50' dernier cri haut de gamme top moumoute en php, mais j'ai pas le temps, alors faite le !!
Je connais les bases du PHP, mais rien qu'essayer d'écrire quelque chose histoire de ne pas trop dériver du point 9 du règlement me fatigue d'avance, ... et j'ai pas l'temps.
Toute façon, vu qu'ici vous avez le temps et que c'est un jeu d'enfant pour vous à quoi bon ?


Kohntark -
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
24 juil. 2011 à 22:47
? ouvre ton propre topic...
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 juil. 2011 à 00:46
l'aspect ironique de mon message t'aurait il échappé ?


Kohntark -
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
25 juil. 2011 à 10:36
Moi ce que je comprends.. de loin.. c'est que tu essaies d'avoir une info Client avec une techno Serveur. Est-ce que tu installes PHP sur ta machine cliente ou désires-tu l'info sur ton serveur ??
Si tu veux l'info sur ton serveur cherche déja un tuto pour lire la base de registre Windows depuis PHP.. PHP et Windows.. beuuuuurk !!
S.
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 14:46
l'info remonte déjà d'elle meme dans glpi, ce que je souhaite c'est le code pour la convertir, après j'adapte çà au glpi pour convertir la variable avant de l'afficher
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
25 juil. 2011 à 15:02
mais tu veux la convertir en quoi ? Si elle remonte de GLPI qu'est-ce qui t'empeche de l'utiliser ?
Donne nous un exemple.
S.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2011 à 22:03
Bonjour,

Mon premier message t'indique comment convertir de l'hexa en décimal et une piste pour le traitement sur les dates.

Ensuite, il faut que tu test et que tu nous mette un peu de code.
(N'oublies pas la coloration syntaxique : )

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:04
strValueName = "HKLM\SYSTEM\CurrentControlSet\Control\Windows" _
& "ShutdownTime"
Set oShell = CreateObject("WScript.Shell")
Ar = oShell.RegRead(strValueName)
Term = Ar(7)*(2^56) + Ar(6)*(2^48) + Ar(5)*(2^40) + Ar(4)*(2^32) _
+ Ar(3)*(2^24) + Ar(2)*(2^16) + Ar(1)*(2^8) + Ar(0)
Days = Term/(1E7*86400)
WScript.Echo "ShutdownTime = " & CDate(DateSerial(1601, 1, 1) + Days)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2011 à 22:12
Bonjour,

Je parlais de ton code PHP ...

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:24
<?php
$variable = "123456789ABCDEF"

$variable = ( Ar(7)*(2^56) + Ar(6)*(2^48) + Ar(5)*(2^40) + Ar(4)*(2^32) + Ar(3)*(2^24) + Ar(2)*(2^16) + Ar(1)*(2^8) + Ar(0)) /(1E7*86400)

echo $variable
?>
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2011 à 22:29
Bonjour,

As-tu cherchés à comprendre ce qu'était Ar ?
Je te donnes un indice, c'est un tableau d'octets.
Dans ton cas, il faut que tu extrais les données de ta chaines hexadécimal en tableau d'octets.

As-tu compris ce que signifie "1E7" ?

Et pourquoi Ar n'a pas le $ signalant que c'est une variable ?

Mon site
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:32
ar = array
c'est un tableau, qui découpe la valeur hexa en 7 case sur lesquel des opérations sont faites
après je connais pas la traduction de la formule en php
0
mickythekiller Messages postés 25 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 août 2011
25 juil. 2011 à 22:35
<?php
$v = "123456789ABCDEF"

$v = ( substr($v,0,2)*(2^56) + substr($v,2,2)*(2^48) + substr($v,4,2)*(2^40) + substr($v,8,2)*(2^32) + substr($v,10,2)*(2^24) + substr($v,12,2)*(2^16) + substr($v,14,2)*(2^8) /(1E7*86400)

echo $v
?>
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2011 à 22:37
Bonjour,

Il faut déjà que tu arrives à extraire les données de ta chaine pour en faire un tableau d'octet.
Cela se fait avec une boucle et quelques fonction que tu trouveras sans pb sur le net.

Ensuite, il te faudra adapter cette ligne :
$variable = ( Ar(7)*(2^56) + Ar(6)*(2^48) + Ar(5)*(2^40) + Ar(4)*(2^32) + Ar(3)*(2^24) + Ar(2)*(2^16) + Ar(1)*(2^8) + Ar(0)) /(1E7*86400)
a*(2^x), permet de décaler la valeur a de x bits, regardes la fonction "pow" de PHP.

Bien que j'imagine le code final, je tiens à ce que ce soit toi qui trouves le code de résultat.

Mon site
0
Rejoignez-nous