> 백엔드 개발 > C++ > C#에서 현재 사용자의 임시 폴더 경로를 안정적으로 가져오는 방법은 무엇입니까?

C#에서 현재 사용자의 임시 폴더 경로를 안정적으로 가져오는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-05 11:46:39
원래의
184명이 탐색했습니다.

How to Reliably Get the Current User's Temporary Folder Path in C#?

현재 사용자의 임시 폴더 경로 가져오기

System.IO.Path.GetTempPath() 함수는 경로를 검색하도록 설계되었습니다. 현재 시스템의 임시 폴더로 이동합니다. 그러나 특정 시스템에서는 사용자별 경로 대신 시스템의 임시 폴더 경로를 반환하는 것으로 보고되었습니다.

이 문제는 Path.GetTempPath()를 호출하는 Kernel32의 기본 기본 GetTempPath() 함수에서 발생합니다. 전화. Microsoft 설명서에 따르면 이 기능은 다음 환경 변수를 순서대로 검색하고 발견된 첫 번째 경로를 사용합니다:

  • TMP
  • TEMP
  • USERPROFILE
  • Windows 디렉터리

Windows 디렉터리 참조가 Windows 디렉터리를 의미하는지 확실하지 않습니다. TEMP 디렉터리 또는 Windows 디렉터리 자체. 그러나 관리자의 경우 TMP, TEMP 또는 USERPROFILE 변수 중 하나가 Windows 경로를 가리키고 결과적으로 잘못된 경로가 반환될 가능성이 있습니다.

또는 이러한 변수가 설정되지 않아 오류가 발생할 수 있습니다. 시스템의 임시 경로로 대체됩니다.

다행히 API 함수를 사용하여 사용자별 임시 폴더 경로를 직접 검색할 수 있습니다. GetTempPathEx(). 이 함수는 사용자 또는 시스템 임시 경로를 가져올지 여부를 지정하는 플래그 매개변수를 사용합니다.

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern bool GetTempPathEx(PathFlags pathFlags, StringBuilder pathBuffer, int bufferSize);

public enum PathFlags
{
    PATH_TEMPORARY = 0,
    PATH_USER_TEMPORARY = 1
}
로그인 후 복사

pathFlags 매개변수를 PATH_USER_TEMPORARY로 설정하면 사용자별 임시 폴더 경로가 반환되도록 할 수 있습니다.

StringBuilder sb = new StringBuilder(260);
if (GetTempPathEx(PathFlags.PATH_USER_TEMPORARY, sb, sb.Capacity))
{
    string tempPath = sb.ToString();
    // User-specific temporary folder path is obtained
}
else
{
    // Handle error using Marshal.GetLastWin32Error()
}
로그인 후 복사

이 접근 방식은 시스템 설정이나 환경에 관계없이 현재 사용자의 임시 폴더 경로를 얻는 보다 안정적인 방법을 제공합니다. 변수입니다.

위 내용은 C#에서 현재 사용자의 임시 폴더 경로를 안정적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿