Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
Bonjour,
je cherche à récupérer diverses informations sur un fichier .exe et un .ini.

Je regarde si les fichiers sont présents à l'aide de la fonction "fRep(ficPresent,frFichier)".
Je stocke les dates de création et de dernier accès aux fichiers.
Je stocke la description du fichier .exe à l'aide de la fonction ExeInfo.

Je regarde s'ils sont utilisés dans les 15 derniers jours à partir des dates de dernier accès au fichier et à la date actuelle.

En théorie, sela fonctionne correctement.
Cela dit, j'ai un problème. Lorsque je vais lire la date de dernier accès au fichier, je récupère bien ma date de dernier accès. MAIS au passage, cette lecture est considérée comme un accès et à la prochaine lecture, j'aurais la date de ma lecture comme étant la date de dernier accès.

Voila comment j'utilise la fonction fDate:

dateDernierAcces = DateVersChaine(fDate(ficExe, "", fAccès)) + " - " + HeureVersChaine(fHeure(ficExe, "", fAccès))



Auriez-vous une autre solution à me proposer pour récupérer la date de dernier accès sans la modifier et pour voir si mon fichier à été utilisé dans les 15 derniers jours?

Merci d'avance
N. ROBIN

Contribution le : 09/05/2007 15:12
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Developpeur WDF
Inscrit:
26/07/2004 09:01
Post(s): 127
Bonjour,
tu peux modifier les dates.
Donc dans ton cas ce serait :

//Tu récupères la date
dateDernierAcces = DateVersChaine(fDate(ficExe, "", fAccès)) + " - " + HeureVersChaine(fHeure(ficExe, "", fAccès))

//puis tu la réécris
fDate(ficExe, ExtraitChaine(dateDernierAcces, 1," - "), fAccès)
fHeure(ficExe, ExtraitChaine(dateDernierAcces, 2," - "), fAccès)

Et voilà.
Je te conseille de rajouter un code de vérification.

Bonne Chance

PS : ce code est écrit sans avoir été testé.

Contribution le : 09/05/2007 16:24
_________________
Faut pas trop se prendre au sérieux ...
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
l'idée me parrait bonne.
J'ai crée une procédure de lecture de la date. A la fin de cette procédure je réécris.

Le problème est toujours présent.
Je crois que je dois faire cetté écriture après chaque récupération de données relatif au fichier.
Je me penche sur le problème.

Encore merci pour vos idées.

Contribution le : 09/05/2007 17:42
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
Il y a encore une chose que je ne saisie pas.

Je commence par lire ma date de dernier accès au fichier, je la stocke dans une variable globale. Je récupère mes données liées au fichier. Puis je fixe la date de dernier accès à partir de la date stockée dans ma variable globale.
Et si je met un espion sur la date de dernier accès, elle est toujours modifiée mais pas remplacée par la date stockée.

Posons la variable globale "dateAcces est une chaine":
-----------------------------------------------
dateAcces = LireDateDernierAcces("C:\.....\...exe")
...
...
// récupérations d'infos sur l'exe avec ExeInfo
...
...
FixeDateDernierAcces("C:\.....\...exe")
-----------------------------------------------


Voici mes procédures:
---------------------------------------------------------
PROCEDURE LireDateDernierAcces(cheminFichier)

// Lecture de la date en cours
dateAcces = DateVersChaine(fDate(cheminFichier, "", fAccès)) + " - " + HeureVersChaine(fHeure(cheminFichier, "", fAccès))

RENVOYER dateAcces
---------------------------------------------------------
---------------------------------------------------------
PROCEDURE FixeDateDernierAcces(cheminFichier)
newDate est une chaîne = ExtraitChaîne(dateAcces, 1," - ")
newDate = ChaîneVersDate(newDate) // Mise en forme DateSystème AAAAMMJJ
newHeure est une chaîne = ExtraitChaîne(dateAcces, 2," - ")
newHeure = Gauche(newHeure,2) + Milieu(newHeure,4,2) + Milieu(newHeure,7,2) + "00" // Mise en forme HeureSystème HHMMSSMM

// Ecriture de la date lue (évite que la lecture soit considérée comme un accés au fichier)
fDate(cheminFichier, newDate, fAccès)
fHeure(cheminFichier, newHeure, fAccès)
---------------------------------------------------------

Contribution le : 10/05/2007 10:07
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
sur un fichier .txt, la date est bien modifiée.
sur un fichier .exe, non. La date actuelle (et non la date stockée) est attribuée comme date de dernier accès.

Je crois qu'il n'y a pas de solution à ce problème.

Contribution le : 11/05/2007 09:04
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
Bonjour,
Est-ce que quelqu'un aurait une autre solution à me proposer pour pallier à ce problème?

Je pensais comparer la date à partir d'un raccourcis mais la date de dernier accès au raccourcis n'est pas toujours modifiée...

Contribution le : 15/05/2007 14:38
Créer un fichier PDF de la contribution Imprimer


Re: Pb date de dernier accès à un fichier
Stagiaire WDF
Inscrit:
09/05/2007 15:04
Post(s): 16
Problème résolu:

Etant donné que les fichiers .vbs sont exécutés à partir de l'exécuteur de script windows, j'ai tenté d'exécuter WScript.exe en lui passant en paramètre, mon fichier .vbs et ces arguments.

Cela fonctionne parfaitement. Encore merci pour vos conseils.

Voila ma solution:

PROCEDURE LireDateDernierAcces(cheminFichier)

// Récupérer la date de dernier accès
IdFichier est un entier
date est une chaîne
taille arg3 est un entier
taille st est un entier

fic est une chaîne = fExtraitChemin(sIniParametreChemin, fDisque) + fExtraitChemin(sIniParametreChemin, fRépertoire) + "donneDateAcces.vbs"
arg1 est une chaîne = fExtraitChemin(cheminFichier, fDisque) + fExtraitChemin(cheminFichier, fRépertoire)
arg2 est une chaîne = fExtraitChemin(cheminFichier, fFichier) + fExtraitChemin(cheminFichier, fExtension)
arg3 est une chaîne = fExtraitChemin(fic, fDisque) + fExtraitChemin(fic, fRépertoire) + "ficDateAcces.txt"
st est une chaîne

sCommande est une chaîne
sCommande = ChaîneConstruit([
"%1" "%2" "%3" "%4"
], fic, arg1, arg2, arg3)

sTexte est une chaîne
sTexte = """" + fic + """ " + " """ + arg1 + """ """ + arg2 + """ """ + arg3 + """"


exec est une chaîne = "C:\WINDOWS\System32\WScript.exe"
exec = """" + exec + """"
chaineScript est une chaîne = exec + " " + sTexte

LanceAppli(chaineScript)


Multitache(50)
IdFichier = fOuvre(arg3, foLectureEcriture)
SI IdFichier <> -1 ALORS
// Lecture d'une ligne dans ce fichier
date = fLitLigne(IdFichier)
FIN
fFerme(IdFichier)

// Lecture de la date en cours
dateAcces = date

RENVOYER dateAcces






Voila le script de mon fichier .vbs permettant de récupérer la date de dernier accès à un fichier sans la modifier: (peut-être que cela peut vous servir)

option explicit

dim FSO, Arg1, Arg2, Arg3, rep, fic, dateAcces, ficDateAcces
Const ForWriting = 2

'On récupère les arguments
Arg1 = Wscript.Arguments(0)
Arg2 = Wscript.Arguments(1)
Arg3 = Wscript.Arguments(2)

Set FSO = CreateObject("Scripting.FileSystemObject")
if FSO.FileExists(Arg1 + Arg2) = true then
Set rep = FSO.GetFolder(Arg1)
Set fic = FSO.GetFile(Arg1 + Arg2)

'Recuperation de la date
if FSO.FileExists(rep.Path & "\" & fic.Name) = true then
dateAcces = fic.DateLastAccessed
end if

'On écrit la date dans un fichier texte
Set ficDateAcces = fso.OpenTextFile(Arg3, ForWriting, true)
ficDateAcces.Write(dateAcces)

else
'On écrit la date dans un fichier texte
dateAcces = "00/00/0000 00:00:00"
Set ficDateAcces = fso.OpenTextFile(Arg3, ForWriting, true)
ficDateAcces.Write(dateAcces) 
end if

Contribution le : 25/05/2007 12:06
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2