현재 사용자의 임시 폴더 경로 가져오기
System.IO.Path.GetTempPath() 함수는 경로를 검색하도록 설계되었습니다. 현재 시스템의 임시 폴더로 이동합니다. 그러나 특정 시스템에서는 사용자별 경로 대신 시스템의 임시 폴더 경로를 반환하는 것으로 보고되었습니다.
이 문제는 Path.GetTempPath()를 호출하는 Kernel32의 기본 기본 GetTempPath() 함수에서 발생합니다. 전화. Microsoft 설명서에 따르면 이 기능은 다음 환경 변수를 순서대로 검색하고 발견된 첫 번째 경로를 사용합니다:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!