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 :
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 :
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!