begin process at 2012 02 11 00:32:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Fichier & Disque

 > 

Lire un fichier utilisé par un autre processus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lire un fichier utilisé par un autre processus

mercredi 22 avril 2009 à 14:37:01 | Lire un fichier utilisé par un autre processus

sinfoni

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.

mercredi 22 avril 2009 à 15:06:33 | Re : Lire un fichier utilisé par un autre processus

jcema

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
mercredi 22 avril 2009 à 17:44:48 | Re : Lire un fichier utilisé par un autre processus

Bacterius

Membre Club
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 !
mercredi 22 avril 2009 à 18:09:24 | Re : Lire un fichier utilisé par un autre processus

sinfoni

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....
mercredi 22 avril 2009 à 18:14:10 | Re : Lire un fichier utilisé par un autre processus

Miquel75

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.

mercredi 22 avril 2009 à 18:40:25 | Re : Lire un fichier utilisé par un autre processus

Bacterius

Membre Club
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 !
mercredi 22 avril 2009 à 18:46:32 | Re : Lire un fichier utilisé par un autre processus

Bacterius

Membre Club
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 !
jeudi 23 avril 2009 à 09:17:37 | Re : Lire un fichier utilisé par un autre processus

sinfoni

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.)

vendredi 24 avril 2009 à 15:23:13 | Re : Lire un fichier utilisé par un autre processus

rt15

Membre Club Administrateur CodeS-SourceS
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.
vendredi 24 avril 2009 à 15:27:52 | Re : Lire un fichier utilisé par un autre processus

sinfoni


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.


Cette discussion est classée dans : fichier, lire, utilisé, processus


Répondre à ce message

Sujets en rapport avec ce message

par quel processus un fichier est il utilisé ? [ par emmanuelgo ] salut a tous....j'ai trouvé pas mal de code permettant de lister les processus actifs sur une session windows...mais je ne trouve rien qui me permettr Fichier utilisé par un processus [ par njulio ] BONJOUR A TOUS, J'aimerais avoir un bout de code en delphi me donnant le chemin complet d'un fichier utilisé par un processus en cours d'exécution. impossible accéder au fichier ...utilisé par un autre processus [ par Gerard ] Bonjour, J'ai développé un serveur sur lequel les gens viennent jouer au bridge. De temps à autre, le serveur crache une erreur 'Le processus ne peut Lire fichier texte ligne à ligne [ par Tank01 ] Bonjour, Je suis débutant en delphi ( depuis trois jours :d ). Je souhaiterais lire un fichier txt ligne a ligne et le stocker dans un string. D'aprè Lire un fichier MP3 et l'arreter [ par lp0683 ] Bonjour, je suis en train de creer une petite interface pour mon jeu, et je souhaiterai passer mes son en MP3 au lieu de wave car c'est un fichier lou Aide pour fichier xml lire et ecrire dedans merci [ par nuagedan100 ] Bonsoir a tous, Je voudrais avoir un bout de code en delphi qui va lire dans un fichier xml et qui me laffiche dans un tedit lors de l'ouverture de l Lire & Supprimer un caractère dans un fichier [ par Encore1ben ] Bonjour,J'ai repris le code source de mon prédécesseur concernant une application qui est censé formater un fichier texte en un autre. Malheureusement lire un fichier et comparer [ par shell13010 ] Bonjour a tous et a toute,je vais vous expliquez mon probleme,alors j'ai un Tbutton  Tmemo et un Tlistbox avec un fichier qui se nomme exemple.txtdonc lire dans un tfilelistbox [ par popa90 ] Bonjour a tous, je doit modifier un programme existant, et à un endroit il y a un Tfilelistbox qui contient plusieurs nom de fichier. pour utiliser ce lire un fichier mp3 en fond d'un programme [ par sanzoiko ] Bonjour je suis nouveau sur ce forum et j'aimerais utiliser le Tmedia player de DELPHI malheureusement je n'ai pas réussi à trouver un  tutoriel compr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales