VB.Net 3.5 Vérifier si le fichier est en cours d'utilisation

J'ai un programme de mise à jour qui est totalement indépendant de ma principale de l'application. Je lance le update.exe pour mettre à jour le app.exe. De vérifier pour voir si le fichier est en cours d'utilisation, je le déplacer vers un autre fichier et attraper une erreur si elle est en cours d'utilisation. Si pas de problèmes occurr je le renommer en arrière. Au moins c'était mon plan...

Programme principal: app.exe

Programme de mise à jour: update.exe

Ce programme est utilisé sur le réseau sans services en cours d'exécution. Ainsi, les utilisateurs est littéralement en exécutant l'exe sur le réseau sur leur machine.

J'ai besoin de mettre à jour le app.exe lorsque l'update.exe a exécuter. De vérifier pour voir si le app.exe était encore en usage, j'étais emballage les éléments suivants dans un try/catch pour voir si elle a échoué:

IO.Fichier.Déplacer(upddir & "\app.exe", upddir & "\app.exe.tst")

IO.Fichier.Déplacer(upddir & "\app.exe.tst", upddir & "\app.exe")

Le plus drôle, c'est que, même si l'app.exe est en cours d'exécution, le déplacement pouvez le renommer à l'application.exe.tst sans aucune erreur. Je peux même continuer à l'application sans aucune erreur.

Je pensais que j'étais hors de mon esprit, j'ai donc eu un autre programmeur de regarder cela et il a vérifié ce que j'ai dit ci-dessus.

Nous avons donc essayé ce enveloppé dans un try catch:

Dim readfile Comme New FileStream(upddir & "\app.exe", FileMode.Open, FileAccess.Lire, FileShare.Aucun)

readfile.Dispose()

J'ai mis le partage de fichiers comme aucun de ceux qui, au moins, j'ai pensé qu'il serait, de montrer qu'il y avait quelqu'un dans le fichier.

Il continuait sans aucune erreur.

Ce que quelqu'un sait pourquoi, je peux renommer un fichier en cours d'utilisation?
Aussi, est-il une meilleure façon de le faire que ce que je fais maintenant?

Merci!
Eroc

  • Vos tests ne seront efficaces que si le fichier à tester est ouvert avec droits exclusifs (ou d'autorisations d'écriture). Ce n'est généralement pas le cas avec les fichiers exécutables (sinon vous risquez de ne pas avoir C:\Program les Fichiers d'un dossier en lecture seule pour les utilisateurs normaux).
InformationsquelleAutor ErocM | 2009-07-03