421

現在、次の関数を使用して、現在のユーザーの一時フォルダーパスを取得しています。

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

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

C:\ Documents and Settings \ administrator \ Local Settings \ Temp \

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

C:\ Windows \ TEMP

MSDNのドキュメントには、上記のAPIが現在のシステムの一時フォルダを返すとも記載されています。

次のような現在のユーザーの一時フォルダパスを提供する他のAPIはありますか?

C:\ Documents and Settings \ administrator \ Local Settings \ Temp \

4

4 に答える 4

435

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

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

そのページからコピー:

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

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

「Windows ディレクトリ」が windows の下の一時ディレクトリを意味するのか、windows ディレクトリ自体を意味するのかは完全にはわかりません。Windows ディレクトリ自体に一時ファイルをダンプすることは、望ましくないケースのように聞こえますが、誰にもわかりません。

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

于 2009-06-03T17:26:44.610 に答える
25

これと同じ要件があります。環境内に存在する必要がある特定のルートディレクトリにログを配置します。

public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

これをサブディレクトリと組み合わせたい場合は、を使用できるはずPath.Combine( ... )です。

このGetFolderPathメソッドには、指定されたパスを作成するか単純に検証するかを制御できる特別なフォルダーオプションのオーバーロードがあります。

于 2012-06-21T18:23:04.570 に答える
-8

試す

Environment.GetEnvironmentVariable("temp");
于 2009-06-03T12:45:04.653 に答える