2010-05-27 33 views
1

Je ne suis en aucun cas un programmeur mais je me demande actuellement si une application crée un fichier temporaire qui nomme les fenêtres. Par exemple, le fichier qu'il crée est tmp001, est-il possible de prendre ce nom tmp001 et de demander à Windows de me donner le prochain fichier temporaire qu'il créerait avant de le créer.Comment savoir le prochain fichier temporaire à créer dans Windows?

Merci,

Mike

+0

Non, pas vraiment. Peut-être devriez-vous poser des questions sur ce que vous essayez d'accomplir, plutôt que de demander comment vous pensez que cela pourrait être fait. – Guffa

+0

Je suis un ingénieur support/testeur de logiciels pour une société de logiciels (petite société de logiciels) et nous avons un problème avec les fichiers temporaires ne sont pas nettoyés correctement. Une des fonctions d'un utilisateur crée deux fichiers temporaires dont un est nettoyé correctement tandis que l'autre est laissé en arrière. Fondamentalement, ce que j'essaie d'accomplir est de faire un fichier temporaire après l'utilisation du fichier temporaire jusqu'à ce qu'il atteigne le début. De cette façon, lorsque notre logiciel fonctionnait, j'obtenais le résultat souhaité.Mon idée d'un côté support/testing était de nommer notre fichier temporaire uniquement, mais ce n'est pas faisable pour le moment. –

Répondre

0

Ce type de code ne peut pas fonctionner de manière fiable sur un système d'exploitation multitâche. Un autre thread dans un autre processus peut préempter le vôtre et revendiquer le nom de fichier que vous souhaitez créer. Ceci est par ailleurs assez facile à contourner, il suffit de nommer vos propres fichiers au lieu de compter sur Windows pour le faire. Faites-le dans le dossier AppData afin de minimiser le risque qu'un autre processus ne gâche le tout.

1

En général les applications utilisant l'API Win32 GetTempFileName pour obtenir le répertoire temporaire. Le processus de génération du fichier temporaire y est décrit. Je ne suis pas sûr pourquoi vous voulez cette information, mais peut-être que vous pourriez par exemple inscrire pour les changements de répertoire via une API Win32 comme ReadDirectoryChangesW ou en utilisant un pilote de mini-filtre.

1

Vous auriez besoin de définir un "fichier temporaire" beaucoup plus explicitement afin de répondre à cette question avec un "Oui". Le problème est qu'un "fichier temporaire" est juste quelque chose qui n'est pas destiné à être conservé. Il peut exister n'importe où sur le système et être créé par un utilisateur, une application ou un service. Cela rendrait presque (ou en fait) impossible de répondre à votre question par un "Oui".

Si vous limitez la définition d'un fichier temporaire aux seuls fichiers du dossier temporaire officiel (ou d'un sous-dossier), vous rencontrez toujours un problème si vous tentez d'intercepter des noms non générés par Windows. N'importe quelle application pourrait produire un fichier temporaire particulièrement nommé dans ce dossier, sans que Windows ne s'en soucie.

Si vous restreignez davantage la définition aux seuls fichiers nommés par Windows, vous pourrez peut-être vous déplacer. Mais est-ce que cela répond vraiment à vos besoins? Après tout cela, il serait peut-être préférable de décrire le problème que vous essayez de résoudre. Il pourrait y avoir une solution beaucoup plus efficace (réalisable) pour résoudre le problème.

3

Il n'existe aucun moyen direct de connaître le nom de fichier temporaire suivant à créer. Par exemple, les programmeurs utilisent la méthode System.IO.Path.GetTempFileName, mais on peut ajouter des préfixes ou des suffixes spécifiques à l'application afin de faciliter la recherche par l'application de ses fichiers nouvellement créés.

On peut même choisir d'enregistrer ce fichier temporaire ailleurs que dans le dossier Temp du système.