J'aimerais connaître un moyen de vérifier si un fichier est déjà ouvert dans
les sessions en cours sur la machine locale et si oui par quelle
application?
Le problème est simple mais la solution l'est bien moins semble-t-il!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick Philippot
Philippe Halet wrote:
J'aimerais connaître un moyen de vérifier si un fichier est déjà ouvert dans les sessions en cours sur la machine locale et si oui par quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier cas: http://www.sysinternals.com/ | Process Explorer.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Philippe Halet wrote:
J'aimerais connaître un moyen de vérifier si un fichier est déjà
ouvert dans les sessions en cours sur la machine locale et si oui par
quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier
cas: http://www.sysinternals.com/ | Process Explorer.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
J'aimerais connaître un moyen de vérifier si un fichier est déjà ouvert dans les sessions en cours sur la machine locale et si oui par quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier cas: http://www.sysinternals.com/ | Process Explorer.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Philippe Halet
Bonjour,
Je vais tenter de m'expliquer avec un peu plus de détail...
J'aimerai dans le cadre d'une application en cours de développement, savoir si le fichier c:monrépertoiremonfichier.doc est actuellement ouvert. De manière à rendre le message destiné à l'utilisateur plus clair, j'aimerai savoir que c'est avec MicroSoft Word (le cas d'un fichier .doc est un peu idiot, un fichier jpeg est plus critique) afin de dire à l'utilisateur que: "L'opération sur le fichier monfichier.doc est impossible car il est actuellement en édition dans MicroSoft Word".
Je dis que l'exemple du .doc est idiot car: 1. Dans 99% des cas (en environnement professionnel peut être plus encore) un fichier .doc est édité avec Word (dans ce cas il suffit donc de vérifier si le fichier est locké ou non). 2. Lorsque le fichier .doc est ouvert, il est locké de manière à ne pas pouvoir l'éditer à plusieurs en même temps: ce n'est pas le cas d'un fichier jpeg ou txt par exemple.
Donc, en définitive, j'aimerai pouvoir identifier pour un fichier donné: - s'il est ouvert (et éventuellement par quel user? ...il peut avoir été ouvert dans une autre session); - le nom de l'application par laquelle il est actuellement ouvert (ça c'est pour faire plus joli).
Pour info, j'ai trouvé sur http://vbnet.mvps.org/index.html?code/network/netfileenum.htm un très bon code expliquant comment trouver la liste des fichiers ouverts à partir d'une autre machine. Je ne vois par contre pas comment faire pour connaître la liste des fichiers ouverts par les users de la machine sur laquelle on se trouve. (cf la phrase: Note that the listing does not contain any files opened or owned by the laptop session itself - only those opened via the network connection are returned.)
J'utilise VB6 SP6 et mon application n'est destinée qu'à des systèmes NT, 2000 ou XP. Les systèmes 95, 98 et ME ne sont et ne seront pas supportés pour une question de sécurité.
Merci d'avance pour votre aide,
Philippe
"Patrick Philippot" wrote in message news:
Philippe Halet wrote: > J'aimerais connaître un moyen de vérifier si un fichier est déjà > ouvert dans les sessions en cours sur la machine locale et si oui par > quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier cas: http://www.sysinternals.com/ | Process Explorer.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Bonjour,
Je vais tenter de m'expliquer avec un peu plus de détail...
J'aimerai dans le cadre d'une application en cours de développement, savoir
si le fichier c:monrépertoiremonfichier.doc est actuellement ouvert. De
manière à rendre le message destiné à l'utilisateur plus clair, j'aimerai
savoir que c'est avec MicroSoft Word (le cas d'un fichier .doc est un peu
idiot, un fichier jpeg est plus critique) afin de dire à l'utilisateur que:
"L'opération sur le fichier monfichier.doc est impossible car il est
actuellement en édition dans MicroSoft Word".
Je dis que l'exemple du .doc est idiot car:
1. Dans 99% des cas (en environnement professionnel peut être plus encore)
un fichier .doc est édité avec Word (dans ce cas il suffit donc de vérifier
si le fichier est locké ou non).
2. Lorsque le fichier .doc est ouvert, il est locké de manière à ne pas
pouvoir l'éditer à plusieurs en même temps: ce n'est pas le cas d'un fichier
jpeg ou txt par exemple.
Donc, en définitive, j'aimerai pouvoir identifier pour un fichier donné:
- s'il est ouvert (et éventuellement par quel user? ...il peut avoir été
ouvert dans une autre session);
- le nom de l'application par laquelle il est actuellement ouvert (ça c'est
pour faire plus joli).
Pour info, j'ai trouvé sur
http://vbnet.mvps.org/index.html?code/network/netfileenum.htm un très bon
code expliquant comment trouver la liste des fichiers ouverts à partir d'une
autre machine. Je ne vois par contre pas comment faire pour connaître la
liste des fichiers ouverts par les users de la machine sur laquelle on se
trouve. (cf la phrase: Note that the listing does not contain any files
opened or owned by the laptop session itself - only those opened via the
network connection are returned.)
J'utilise VB6 SP6 et mon application n'est destinée qu'à des systèmes NT,
2000 ou XP. Les systèmes 95, 98 et ME ne sont et ne seront pas supportés
pour une question de sécurité.
Merci d'avance pour votre aide,
Philippe
"Patrick Philippot" <patrick.philippot@mainsoft.xx.fr> wrote in message
news:eSZrKMz9EHA.3708@TK2MSFTNGP14.phx.gbl...
Philippe Halet wrote:
> J'aimerais connaître un moyen de vérifier si un fichier est déjà
> ouvert dans les sessions en cours sur la machine locale et si oui par
> quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier
cas: http://www.sysinternals.com/ | Process Explorer.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Je vais tenter de m'expliquer avec un peu plus de détail...
J'aimerai dans le cadre d'une application en cours de développement, savoir si le fichier c:monrépertoiremonfichier.doc est actuellement ouvert. De manière à rendre le message destiné à l'utilisateur plus clair, j'aimerai savoir que c'est avec MicroSoft Word (le cas d'un fichier .doc est un peu idiot, un fichier jpeg est plus critique) afin de dire à l'utilisateur que: "L'opération sur le fichier monfichier.doc est impossible car il est actuellement en édition dans MicroSoft Word".
Je dis que l'exemple du .doc est idiot car: 1. Dans 99% des cas (en environnement professionnel peut être plus encore) un fichier .doc est édité avec Word (dans ce cas il suffit donc de vérifier si le fichier est locké ou non). 2. Lorsque le fichier .doc est ouvert, il est locké de manière à ne pas pouvoir l'éditer à plusieurs en même temps: ce n'est pas le cas d'un fichier jpeg ou txt par exemple.
Donc, en définitive, j'aimerai pouvoir identifier pour un fichier donné: - s'il est ouvert (et éventuellement par quel user? ...il peut avoir été ouvert dans une autre session); - le nom de l'application par laquelle il est actuellement ouvert (ça c'est pour faire plus joli).
Pour info, j'ai trouvé sur http://vbnet.mvps.org/index.html?code/network/netfileenum.htm un très bon code expliquant comment trouver la liste des fichiers ouverts à partir d'une autre machine. Je ne vois par contre pas comment faire pour connaître la liste des fichiers ouverts par les users de la machine sur laquelle on se trouve. (cf la phrase: Note that the listing does not contain any files opened or owned by the laptop session itself - only those opened via the network connection are returned.)
J'utilise VB6 SP6 et mon application n'est destinée qu'à des systèmes NT, 2000 ou XP. Les systèmes 95, 98 et ME ne sont et ne seront pas supportés pour une question de sécurité.
Merci d'avance pour votre aide,
Philippe
"Patrick Philippot" wrote in message news:
Philippe Halet wrote: > J'aimerais connaître un moyen de vérifier si un fichier est déjà > ouvert dans les sessions en cours sur la machine locale et si oui par > quelle application?
Bonjour,
La question n'est pas très claire: "par quelle application?".
Vous voulez vérifier par programme ou via un utilitaire? Dans ce dernier cas: http://www.sysinternals.com/ | Process Explorer.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Patrick Philippot
Ce que vous voulez faire est possible puisque Process Explorer et d'autres utilitaires le font.
Cependant, c'est une opération assez lourde.
1. Énumération de tous les processus. 2. Pour chaque processus, énumération des ressources 3. Pour chaque ressource, est-ce un handle de fichier? 4. Si oui, récupération du nom du fichier et stockage du nom du processus (nom de l'exe) 5. Est-ce que c'est le fichier que je cherche?
Je vais tâcher de vous trouver quelque chose (pas ce soir) mais je n'ai jamais vu faire ça en VB. Si je trouve du code, ça sera probablement du C ou du C++.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Ce que vous voulez faire est possible puisque Process Explorer et
d'autres utilitaires le font.
Cependant, c'est une opération assez lourde.
1. Énumération de tous les processus.
2. Pour chaque processus, énumération des ressources
3. Pour chaque ressource, est-ce un handle de fichier?
4. Si oui, récupération du nom du fichier et stockage du nom du
processus (nom de l'exe)
5. Est-ce que c'est le fichier que je cherche?
Je vais tâcher de vous trouver quelque chose (pas ce soir) mais je n'ai
jamais vu faire ça en VB. Si je trouve du code, ça sera probablement du
C ou du C++.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Ce que vous voulez faire est possible puisque Process Explorer et d'autres utilitaires le font.
Cependant, c'est une opération assez lourde.
1. Énumération de tous les processus. 2. Pour chaque processus, énumération des ressources 3. Pour chaque ressource, est-ce un handle de fichier? 4. Si oui, récupération du nom du fichier et stockage du nom du processus (nom de l'exe) 5. Est-ce que c'est le fichier que je cherche?
Je vais tâcher de vous trouver quelque chose (pas ce soir) mais je n'ai jamais vu faire ça en VB. Si je trouve du code, ça sera probablement du C ou du C++.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
C'est un clone du NTHandle de SysInternals.com mais avec le code source en C++. Ce programme est capable d'énumérer tous les processus et pour chaque processus d'énumérer les ressources, dont les fichiers ouverts.
Je vois mal porter tout ça en VB. Le mieux serait probablement d'isoler le code qui vous intéresse dans une DLL.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
C'est un clone du NTHandle de SysInternals.com mais avec le code source
en C++. Ce programme est capable d'énumérer tous les processus et pour
chaque processus d'énumérer les ressources, dont les fichiers ouverts.
Je vois mal porter tout ça en VB. Le mieux serait probablement d'isoler
le code qui vous intéresse dans une DLL.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
C'est un clone du NTHandle de SysInternals.com mais avec le code source en C++. Ce programme est capable d'énumérer tous les processus et pour chaque processus d'énumérer les ressources, dont les fichiers ouverts.
Je vois mal porter tout ça en VB. Le mieux serait probablement d'isoler le code qui vous intéresse dans une DLL.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr