OVH Cloud OVH Cloud

Récupérer la date de la dernière

7 réponses
Avatar
Flagawax
bonjour,

Je cherche un scirpt qui me permettrai de récupérer la date de la dernière
utilisation d'un logiciel, sous windows 2000 et XP, passé en paramètre ou
découvert dans le script. Je sais que c'est possible... c'est pourquoi j'en
appelle à
vous....

Merci

7 réponses

Avatar
Jean-Claude BELLAMY
Dans le message :,
Flagawax a pris la peine d'écrire ce
qui suit :
bonjour,

Je cherche un scirpt qui me permettrai de récupérer la date de la
dernière utilisation d'un logiciel, sous windows 2000 et XP, passé en
paramètre ou découvert dans le script. Je sais que c'est possible...
c'est pourquoi j'en appelle à vous....


Fichier "LastAccess.vbs"
---------- couper ici ----------
' Date de dernier accès à un fichier
'
' JC BELLAMY © 2006
' -------------------------------------
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set args = Wscript.Arguments
nbargs=args.count
If nbargs=0 then wscript.quit
FileName=args(0)
If not fso.FileExists(FileName) Then
wscript.echo "Fichier " & FileName & " inexistant"
wscript.quit
End If
Set f=fso.GetFile(FileName)
wscript.echo "Date de dernier accès : " & f.DateLastAccessed
Wscript.quit
---------- couper ici ----------

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Flagawax
Merci JC BELLAMY,

Question subsidière : comment faire pour récupérer la date dernière
d'utilisation des logiciels installés sur mon PC ?

Car j'arrive à lister les logiciels installer via les clès Uninstall
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall
Le problème est de faire correspondre les logiciels trouvés avec leur
éxécutable.

Y-a-t-il une solution ?

merci


Dans le message :,
Flagawax a pris la peine d'écrire ce
qui suit :
bonjour,

Je cherche un scirpt qui me permettrai de récupérer la date de la
dernière utilisation d'un logiciel, sous windows 2000 et XP, passé en
paramètre ou découvert dans le script. Je sais que c'est possible...
c'est pourquoi j'en appelle à vous....


Fichier "LastAccess.vbs"
---------- couper ici ----------
' Date de dernier accès à un fichier
'
' JC BELLAMY © 2006
' -------------------------------------
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set args = Wscript.Arguments
nbargs=args.count
If nbargs=0 then wscript.quit
FileName=args(0)
If not fso.FileExists(FileName) Then
wscript.echo "Fichier " & FileName & " inexistant"
wscript.quit
End If
Set f=fso.GetFile(FileName)
wscript.echo "Date de dernier accès : " & f.DateLastAccessed
Wscript.quit
---------- couper ici ----------

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr






Avatar
Jean-Claude BELLAMY
Dans le message :,
Flagawax a pris la peine d'écrire ce
qui suit :
Merci JC BELLAMY,

Question subsidière : comment faire pour récupérer la date dernière
d'utilisation des logiciels installés sur mon PC ?

Car j'arrive à lister les logiciels installer via les clès Uninstall
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall
Le problème est de faire correspondre les logiciels trouvés avec leur
éxécutable.

Y-a-t-il une solution ?


Oui, en énumérant toutes les clefs contenues dans :
HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Paths
(à l'aide de WMI, de la classe "StdRegProv" et des méthodes "EnumKey" et
"GetStringValue")

Mais il n'y a pas forcément TOUTES les applications !




PS : étant donné que je supporte très difficilement les fautes
d'orthographe, je te signale que l'on écrit "SUBSIDIAIRE"
(du latin "subsidium", signifiant "réserve")
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Flagawax
.... Re bonjour,

J'ai essayé votre script, cependant j'obtient toujours la même date et le
même horaire, ils correspondent à moment d'exécution du script.
voici un extrait de mon code (issu d'un script trouvé sur le web), je scanne
tous les logiciels sous Registre Uninstall, et j'utilise "DisplayIcon" pour
avoir un chemin vers un exécutable :

Function GetAddRemove(sComp)
Dim cnt, oReg, sBaseKey, iRC, aSubKeys
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!" & _
sComp & "/root/default:StdRegProv")
sBaseKey = "SOFTWAREMicrosoftWindowsCurrentVersionUninstall"
iRC = oReg.EnumKey(HKLM, sBaseKey, aSubKeys)

Dim sKey, sValue, sTmp, sVersion, sDateValue, sYr, sMth, sDay, sTry, sIcon
Dim sPathFile, sLocation

For Each sKey In aSubKeys
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey, "DisplayName",
sValue)
If iRC <> 0 Then
oReg.GetStringValue HKLM, sBaseKey & sKey,
"QuietDisplayName", sValue
End If
If sValue <> "" Then
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey, "DisplayIcon", sIcon)
If sIcon <> "" Then
sPathFile = FindExe(sIcon)
End If
End If
Next
End Function

Function FindExe(sPath)
Dim tab, tab2
If sPath <> "" Then
tab = Split(sPath,",")
tab2 = Split(tab(0),".")
If tab2(1) = "exe" Then
FindExe = FindDate(tab(0))
Else
FindExe = ""
End If
Else
FindExe = ""
End If
'FindExe = "null"
End Function

Function FindDate(sPath)
Dim f
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(sPath) Then
Set f=fso.GetFile(sPath)
wscript.echo "Date de dernier accès : " & f.name & f.DateLastAccessed
FindDate = f.DateLastAccessed
Else
FindDate = ""
End If

J'utilise oReg.GetStringValue(HKLM, sBaseKey & sKey, "DisplayIcon", sIcon)
juste pour faire des tests.

Merci
Avatar
bayosky
Salut...
Je te propose les modifs suivantes ...
1. J'imagine que tu désires utilisé cela avec des machines
distantes
sinon sComp est inutile
2. le nom GetAddRemove() est bizarre ??? :o)

' ##############################

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE

' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Function GetAddRemove(sComp)
Dim cnt, oReg, sBaseKey, iRC, aSubKeys
Dim sKey, sValue, sTmp, sVersion, sDateValue, sYr, sMth, sDay, sTry,
sIcon
Dim sPathFile, sLocation


Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!" &
_
sComp & "/root/default:StdRegProv")
sBaseKey = "SOFTWAREMicrosoftWindowsCurrentVersionUninstall"
iRC = oReg.EnumKey(HKLM, sBaseKey, aSubKeys)


For Each sKey In aSubKeys
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey,
"DisplayName",
sValue)
If iRC <> 0 Then
oReg.GetStringValue HKLM, sBaseKey & sKey,
"QuietDisplayName", sValue
End If
If sValue <> "" Then
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey, "DisplayIcon", sIcon)
If sIcon <> "" Then
sPathFile = FindExe(sIcon)
End If
End If
Next
End Function

' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

Function FindExe(sPath)
Dim tab, tab2
If sPath <> "" Then
tab = Split(sPath,",")
tab2 = Split(tab(0),".")
If tab2(1) = "exe" Then
FindExe = FindDate(tab(0))
Else
FindExe = ""
End If
Else
FindExe = ""
End If
'FindExe = "null"
End Function
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Function FindDate(sPath)
Dim f
If fso.FileExists(sPath) Then
Set f=fso.GetFile(sPath)
FindDate = f.DateLastAccessed
wscript.echo "Date de dernier accès : " & f.name & FindDate
Else
FindDate = ""
End If
End Function
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Avatar
Flagawax
La variable sComp ne change rien me semble-t-il ?

et GetAddRemove est juste le nom d'une fonction, j'aurai plus l'appeller
fonction1().

j'ai chercher sur internet et apparement je ne suis pas le seul à avoir ce
problème.


maudit .DateLastAccessed



Salut...
Je te propose les modifs suivantes ...
1. J'imagine que tu désires utilisé cela avec des machines
distantes
sinon sComp est inutile
2. le nom GetAddRemove() est bizarre ??? :o)

' ##############################

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE

' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Function GetAddRemove(sComp)
Dim cnt, oReg, sBaseKey, iRC, aSubKeys
Dim sKey, sValue, sTmp, sVersion, sDateValue, sYr, sMth, sDay, sTry,
sIcon
Dim sPathFile, sLocation


Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!" &
_
sComp & "/root/default:StdRegProv")
sBaseKey = "SOFTWAREMicrosoftWindowsCurrentVersionUninstall"
iRC = oReg.EnumKey(HKLM, sBaseKey, aSubKeys)


For Each sKey In aSubKeys
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey,
"DisplayName",
sValue)
If iRC <> 0 Then
oReg.GetStringValue HKLM, sBaseKey & sKey,
"QuietDisplayName", sValue
End If
If sValue <> "" Then
iRC = oReg.GetStringValue(HKLM, sBaseKey & sKey, "DisplayIcon", sIcon)
If sIcon <> "" Then
sPathFile = FindExe(sIcon)
End If
End If
Next
End Function

' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

Function FindExe(sPath)
Dim tab, tab2
If sPath <> "" Then
tab = Split(sPath,",")
tab2 = Split(tab(0),".")
If tab2(1) = "exe" Then
FindExe = FindDate(tab(0))
Else
FindExe = ""
End If
Else
FindExe = ""
End If
'FindExe = "null"
End Function
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Function FindDate(sPath)
Dim f
If fso.FileExists(sPath) Then
Set f=fso.GetFile(sPath)
FindDate = f.DateLastAccessed
wscript.echo "Date de dernier accès : " & f.name & FindDate
Else
FindDate = ""
End If
End Function
' °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°




Avatar
Michel Claveau
Bonsoir !

En invite de commande (batch ou PeJBshell), on peut faire :

DIR toto.exe /T:A

Et on obtient le dernier accès à l'appli "toto.exe"

--
@-salutations

Michel Claveau