Lire un fichier utilisé par un autre processus

sinfoni Messages postés 9 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009 - 22 avril 2009 à 14:37
sinfoni Messages postés 9 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009 - 24 avril 2009 à 15:27
Hello tous,

Tout est dans le titre: Je cherche à lire un fichier en cours d'utilisation par l'OS (verrouillé en lecture-écriture) pour en faire une sauvegarde. Cela est forcément possible puisque les programmes "clôneurs" y parviennent. Comment...  là est la question.

Merci.
A voir également:

9 réponses

jcema Messages postés 1 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 22 avril 2009
22 avril 2009 à 15:06
Je sais que tu préférerais le programmer toi-même mais cette petite application fais bien le travail :
http://ccollomb.free.fr/unlocker/

Marcel
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 avril 2009 à 17:44
Euh quand un fichier est ouvert avec SHARE_EXCLUSIVE ou un flag du genre, le processus appellant dénie tout accès à ce fichier, même depuis ce même processus. OpenFile renverra systématiquement HFILE_ERROR sur ce fichier. Mais peut-être que certaines API peuvent permettre de lire un petit bout du fichier, puis lire le bout suivant, etc ... Pourquoi pas MapViewOfFile (puis UnMapViewOfFile). Ou alors lire la mémoire du processus, mais je ne pense pas que cela soit réalisable comme ceci.
Bref, ça a l'air assez dur à faire, ce que tu nous dis là.

@jcema : Le lien que tu passes parle d'une application qui kill un processus qui utilise ce fichier, pour pouvoir le lire tranquillement. Je ne suis pas sûr que ce soit la meilleure technique ... Enfin ça dépend l'usage que l'on veut en faire evidemment ...

Cordialement, Bacterius !
0
sinfoni Messages postés 9 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009
22 avril 2009 à 18:09
Merci,

Effectivement, unlocker... ce n'est pas vraiment ce que je cherche. Cette histoire de fichier "locké" m'intrigue pour 2 raisons:

Il existe des programmes capables de faire de la copie de fichier en "mode bloc". Exemple: soft de sauvegarde en ligne. Typiquement, j'ai un fichier outlook.pst de 1 Go, et le soft est non seulement capable de me sauvegarder ce PST alors qu'il est en cours d'utilisation par Outlook (et j'ai testé la restauration, ça marche !), mais il ne me sauvegarde QUE les octets modifiés, soit quelque Mo au lieu de balancer le Go entier.

Des Softs comme XxClone sont capables de cloner un disque système alors que l'OS tourne et que ce même OS verrouille nombre de fichiers. Et xxclone travaille bien en mode fichier, il ne fait pas de copie de secteurs puisqu'on peut cloner d'une partition vers une partition plus petite (tant que la taille des fichiers n'excède pas la taille de la partitino cible bien sûr !) et fait même de l'incrémental au niveau fichier (mise à jour de clone rapide car ne reprend que les fichiers modifiés).

Donc c'est forcément possible non ? En trouvant les blocs physiques sur le HD correspondant au fichier puis en faisant un lecture directe des blocs bit à bit ?

Merci.
ps: attention, je parle bien de xxclone (avec 2 "x") et non de xclone....
0
Miquel75 Messages postés 41 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 23 avril 2009
22 avril 2009 à 18:14
Ca a été expliqué des milliers de fois sur google groups depuis 18 ans....

On ferme le hande remotely et on fait ce que l'on veut.
0

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

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 avril 2009 à 18:40
Je suis désolé Miquel75 mais ce n'est pas une bonne manipulation. En faisant ça tu prives le processus de son accès au fichier, et si il l'utilise pour une opération critique, ça peut conduire à la fermeture de ce processus, et parfois à des dommages matériels. Si c'est bien ce que tu entends par "fermer le handle de fichier d'un processus A depuis un processus B".

Cordialement, Bacterius !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 avril 2009 à 18:46
Et puis c'est pas très poli ni très professionnel tout ça ... Je serais une application, j'aimerais pas qu'on m'arrache mon descripteur de fichier des mains ...

Cordialement, Bacterius !
0
sinfoni Messages postés 9 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009
23 avril 2009 à 09:17
Tout à fait d'accord avec Bacterius sur le fond. Le processus qui bloque mon fichier est un processus windows, hors de question de le brutaliser !

(Quant à la forme "Ca a été expliqué des milliers de fois sur google groups depuis 18 ans....", c'est pas top non plus. Tous les utilisateurs de ce forum ne développent pas 16H00 par jour sur Delphi, sinon ils seraient tous experts, n'auraient pas de question, et... ne seraient donc pas sur ce forum.)
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 avril 2009 à 15:23
Salut,

CreateFile.

Faudrait savoir avec quels flags de partage le fichier a été ouvert, et avec quel droit tu l'ouvres toi.

Essaie d'ouvrir ton fichier avec les trois :
FILE_SHARE_DELETE
FILE_SHARE_READ
FILE_SHARE_WRITE

Et en GENERIC_READ pour le DesiredAccess.
0
sinfoni Messages postés 9 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009
24 avril 2009 à 15:27
Moi je veux juste le lire.
Je vais essayer, dès que j'ai un peu de temps, donc semaine prochaine, lundi probablement, et je reviendrai te dire si c'est ok.

Merci.
0
Rejoignez-nous