[C#] 현재 사용자의 임시 폴더를 얻는 방법

현재 다음 기능을 사용하여 현재 사용자의 임시 폴더 경로를 가져옵니다.

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

일부 컴퓨터에서는 다음과 같이 현재 사용자의 임시 폴더 경로를 제공합니다.

C : \ 문서 및 설정 \ 관리자 \ 로컬 설정 \ 온도 \

일부 컴퓨터에서는 다음과 같은 시스템 임시 폴더 경로를 제공합니다.

C : \ Windows \ TEMP

MSDN Documentation은 또한 위의 API가 현재 시스템의 임시 폴더를 반환한다고 말합니다.

다음과 같이 현재 사용자의 임시 폴더 경로를 제공하는 다른 API가 있습니까?

C : \ 문서 및 설정 \ 관리자 \ 로컬 설정 \ 온도 \



답변

System.IO.Path.GetTempPath()GetTempPath(..)Kernel32에서 기본 호출을위한 래퍼 일뿐 입니다.

http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx를 살펴보십시오 .

해당 페이지에서 복사 :

GetTempPath 함수는 다음 순서로 환경 변수가 있는지 확인하고 발견 된 첫 번째 경로를 사용합니다.

  • TMP 환경 변수로 지정된 경로입니다.
  • TEMP 환경 변수로 지정된 경로입니다.
  • USERPROFILE 환경 변수로 지정된 경로입니다.
  • Windows 디렉토리

“Windows 디렉토리”가 windows 아래의 temp 디렉토리인지 Windows 디렉토리 자체인지는 명확하지 않습니다. Windows 디렉토리 자체에 임시 파일을 덤프하는 것은 바람직하지 않은 경우처럼 들리지만 누가 아는가.

따라서 해당 페이지를 게시물과 결합하면 관리자 사용자의 TMP, TEMP 또는 USERPROFILE 변수 중 하나가 Windows 경로를 가리 키거나 설정되지 않고 Windows 임시 경로로 대체되고 있다고 생각합니다.


답변

이것을 사용 하지 마십시오 :

System.Environment.GetEnvironmentVariable("TEMP")

환경 변수를 재정의 할 수 있으므로 TEMP변수가 반드시 디렉토리 일 필요는 없습니다.

올바른 방법은 System.IO.Path.GetTempPath()허용 된 답변과 같이 사용 하는 것입니다.


답변

동일한 요구 사항이 있습니다. 환경 내에 존재 해야하는 특정 루트 디렉토리에 로그를 넣고 싶습니다.

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

이것을 하위 디렉토리와 결합하려면을 사용할 수 있어야합니다 Path.Combine( ... ).

GetFolderPath방법에는 지정된 경로를 만들지 또는 간단히 확인할지 여부를 제어 할 수있는 특수 폴더 옵션에 대한 과부하가 있습니다.


답변

시험

Environment.GetEnvironmentVariable("temp");


답변