現在のユーザーの一時フォルダーの決定
質問:
System.IO を使用する場合。 Path.GetTempPath() は一時フォルダーのパスを取得します。現在のユーザーの一時フォルダーの受信とシステムの一時フォルダーの受信の間に不一致が観察されます。現在のユーザーの一時フォルダーのパスを具体的に提供する代替方法はありますか?
回答:
GetTempPath() 関数の理解:
System.IO.Path.GetTempPath() はネイティブのラッパーですKernel32 の GetTempPath() 関数。 MSDN によると、この関数は環境変数を次の順序で優先します:
に対処する不一致:
TMP、TEMP、または USERPROFILE 変数のいずれかが Windows パス、特にその一時ディレクトリを指している場合、一時フォルダ パスの不一致が発生する可能性があります。
代替アプローチ:
のみを提供する特定の API はありませんが、現在のユーザーの一時フォルダー パスを構築するには、前に説明した環境変数を利用できます。
コードサンプル:
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 }
以上がC# で現在のユーザーの一時フォルダーのパスを確実に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。