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
Libérer: 2025-01-05 09:17:40
original
128 Les gens l'ont consulté

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal