1. ホーム
  2. c#

[解決済み] Path.GetTempPath()の戻り値は何で決まるのでしょうか?

2022-02-16 13:39:12

質問

現在、私は Path.GetTempPath() が、最近、あるユーザーのマシンで、返されたパスが私が期待したものと異なっているのに出くわしました。

通常、返されるパスは C:Documents and Settings[userid]↵Local Settings/Temp が、この場合は C:\Temp

通常は問題ないのですが、何らかの理由で該当のユーザーが C:\Temp

環境変数を再確認したところ、USER環境変数が期待通り、次の場所を指していました。 C:Documents and Settings[userid]⑭Local Settings⑭Temp 一方、SYSTEM 環境変数の指す先は C:♪WINNT ♪Temp .

で...どこが Path.GetTempPath() の値を取得しているのでしょうか?グループポリシー?レジストリ?

ググってみましたが、無駄でした。

解決方法は?

(リフレクター使用時) Path.GetTempPath() 最終的にWin32の関数を呼び出す GetTempPath (kernel32.dllより)。この状態についてのMDSNドキュメント。

GetTempPath関数は、次の順序で環境変数の存在を確認し、最初に見つかったパスを使用します。

  • 環境変数TMPで指定されたパス。
  • TEMP環境変数で指定されたパス。
  • USERPROFILE環境変数で指定されたパス。
  • Windowsのディレクトリです。

なお、以下のようにも記載されています。 は、そのパスが実際に存在するかどうか、あるいは書き込めるかどうかをチェックしません。 そのため、存在しないパスやアクセスできないパスにログファイルを書き込もうとしてしまう可能性があります。