Maison >développement back-end >C++ >Comment puis-je obtenir de manière fiable le chemin du dossier temporaire de l'utilisateur actuel en C# ?

Comment puis-je obtenir de manière fiable le chemin du dossier temporaire de l'utilisateur actuel en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 09:17:40164parcourir

How Can I Reliably Get the Current User's Temporary Folder Path in C#?

Détermination du dossier temporaire de l'utilisateur actuel

Question :

Lors de l'utilisation de System.IO. Path.GetTempPath() pour récupérer le chemin du dossier temporaire, des incohérences sont observées entre la réception du dossier temporaire de l'utilisateur actuel et le dossier temporaire du système. Existe-t-il une méthode alternative qui fournit spécifiquement le chemin du dossier temporaire de l'utilisateur actuel ?

Réponse :

Comprendre la fonction GetTempPath() :

System.IO.Path.GetTempPath() est un wrapper pour la fonction native GetTempPath() dans Kernel32. Selon MSDN, cette fonction donne la priorité aux variables d'environnement dans l'ordre suivant :

  • TMP
  • TEMP
  • USERPROFILE
  • Répertoire Windows

Répondre au Incohérence :

L'incohérence dans les chemins de dossiers temporaires peut survenir si l'une des variables TMP, TEMP ou USERPROFILE pointe vers le chemin Windows, en particulier son répertoire temporaire.

Approche alternative :

Bien qu'il n'existe aucune API spécifique qui fournit uniquement le chemin du dossier temporaire de l'utilisateur actuel, il est possible d'exploiter les variables d'environnement évoquées précédemment pour le construire :

  • Si la variable USERPROFILE est définie et pointe vers un répertoire de profil utilisateur valide, alors le chemin du dossier temporaire peut en être dérivé, généralement situé sur {chemin du profil utilisateur}Local SettingsTemp.
  • Si la variable TMP ou TEMP est définie et pointe vers un dossier temporaire valide, elle peut être utilisée directement.

Exemple de code :

string userTempPath;

// Check the USERPROFILE variable first
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("USERPROFILE")))
{
    userTempPath = Path.Combine(Environment.GetEnvironmentVariable("USERPROFILE"), "Local Settings", "Temp");
}
// Check the TMP/TEMP variables if USERPROFILE is not defined or valid
else
{
    string tempVar = Environment.GetEnvironmentVariable("TMP");

    if (string.IsNullOrEmpty(tempVar))
    {
        tempVar = Environment.GetEnvironmentVariable("TEMP");
    }

    if (!string.IsNullOrEmpty(tempVar) && Directory.Exists(tempVar))
    {
        userTempPath = tempVar;
    }
}

if (!string.IsNullOrEmpty(userTempPath))
{
    // At this point, userTempPath should contain the current user's temporary folder path
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn