1. ホーム
  2. c#

[解決済み】現在のユーザーのテンポラリフォルダを取得する方法

2022-04-14 09:21:06

質問

現在、私は現在のユーザーの一時フォルダのパスを取得するために、以下の関数を使用しています。

string tempPath = System.IO.Path.GetTempPath();

あるマシンでは、現在のユーザーの一時フォルダのパスが表示されます。

C:\Documents and SettingsadministratorLocal SettingsTemp

あるマシンでは、システム一時フォルダのパスが次のように表示されます。

C:\WindowsTEMP

MSDN Documentationにも、上記のAPIは現在のシステムのテンポラリフォルダを返すと書かれています。

このように現在のユーザーの一時フォルダのパスを教えてくれるAPIは他にないのでしょうか?

<ブロッククオート

C:\Documents and SettingsadministratorLocal SettingsTemp

解決方法は?

System.IO.Path.GetTempPath() をネイティブに呼び出すための単なるラッパーです。 GetTempPath(..) をKernel32で実行します。

をご覧ください。 http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx

そのページからのコピーです。

<ブロッククオート

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

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

"The Windows directory"がwindows以下のtempディレクトリを意味するのか、windowsディレクトリそのものを意味するのか、私には全く分かりません。windowsディレクトリ自体にtempファイルをダンプするのは好ましくないケースのような気がしますが、誰にもわかりません。

そのページとあなたの投稿を組み合わせると、管理者ユーザーのTMP、TEMP、USERPROFILE変数のいずれかがウィンドウズのパスを指しているか、またはそれらが設定されておらず、ウィンドウズの一時的なパスへのフォールバックを取っているのではないかと推測します。