begin process at 2010 02 10 10:10:37
  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 Lire le même fichier par plusieurs mediaplayer en décalé [ par jmdeffet ] Bonjour à tous :Voici mon problème:je dois lire le même fichier (qui peut être sélectionné par l'utilisateur pendant l'exécution) avec un décalage via DELPHI CopyFile : "erreur fichier utilisé par un autre processus" [ par Silvere6 ] SalutJe ne parviens pas à copier un fichier avec la fonction DELPHI\CopyFile alors que j'y arrive sans pb avec l'explorateur et la commande "COPY" sou Ouvrir un fichier en lecture qui est déjà utilisé par un autre programme.... [ par OrsE ] Salut tout le monde, Voilà je chercher à ouvrir un fichir .doc alors que Word est l'utilise. Je sais que c'est possible parce que j'ai un logiciel du Lire un fichier wave [ par olator ] J'ai programmer un puissance4 et je désire que mon prog joue un son wave (enregistrer sur le disque dur) lorsque le joueur gagne. Comment fait on pour Procedure et fichier texte+pettie question [ par zulot ] Voila j'aurais foulu savoir comment creer une procedure (ou function si ca va mieux) dans laquelle j'ouvre et lit un fichier texte, puis ouvre et ecri lire un fichier XML [ par BlouMan ] bonjour,comment peut-on lire un fichier XML dans delhi 7 pro?...pour l'écrire j'utilise un TClientDataSet et je l'encode en UTF-8merci BLOU BLOU POWA lire dans un fichier binaire [ par elementalord ] Bonjour à tous j'ai besoin d'aide pour lire dans un fichier binaire est ce que quelqu'un pourait m'aider? merci beaucoup. lire chaine très longue dans un fichier ini et la stocker dans une var pour être traitée [ par Bestdoud ] en fait j'ai le fichier ini suivant: http://amigagaamp.free.fr/tests/region.ini je n'arrive pas à récupérer les chaînes entièrement j'utilise la fon aide lecture fichier xml [ par jeromelef ] bonjour, j'ai un gros oucis avec mon fichier xml. comment dois-je faire pour lire ce fichier ? <dom


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 20,982 sec (4)

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