C# %AppData% 경로 가져오기
C# 2008 SP1
아래 코드를 사용하고 있습니다.
dt.ReadXml("%AppData%\\DateLinks.xml");
그러나 응용 프로그램이 실행되는 위치를 알려주는 예외가 발생했습니다.
경로 'D:'의 일부를 찾을 수 없습니다.\프로젝트\하위 버전 프로젝트\CatDialer\bin\Debug\%AppData%\DateLinks.xml'입니다.
나는 생각했습니다.%AppData%상대 경로를 찾아야 합니다.내가 갈때Start|Run|%AppData%윈도우 탐색기는 나를 그 디렉토리로 데려갑니다.
클라이언트 컴퓨터마다 사용자가 다르기 때문에 전체 경로를 넣을 수 없습니다.
AppData 디렉토리를 가져오려면 다음을 사용하는 것이 가장 좋습니다.GetFolderPath방법:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
(반드시 추가해야 함)using System존재하지 않는 경우)
%AppData%는 환경 변수이며 .NET의 모든 위치에서 자동으로 확장되지는 않지만 이 방법을 사용하여 확장할 수 있습니다.저는 여전히 당신이 사용할 것을 강력하게 제안합니다.GetFolderPath하지만, 요하네스 뢰셀이 논평에서 지적했듯이,%AppData%특정 상황에서는 설정되지 않을 수 있습니다.
마지막으로, 예제에 표시된 대로 경로를 작성하려면 다음을 수행합니다.
var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "DateLinks.xml");
AppData 디렉토리를 사용하는 가장 좋은 방법은 method를 사용하는 것입니다.
이유:
- 문자열의 일부를 유효한 디렉토리 또는 기타로 대체합니다.
- 대소문자를 구분하지 않습니다.
- 쉽고 복잡하지 않습니다.
- 그것은 표준입니다.
- 사용자 입력을 처리하기에 좋습니다.
예:
string path;
path = @"%AppData%\stuff";
path = @"%aPpdAtA%\HelloWorld";
path = @"%progRAMfiLES%\Adobe;%appdata%\FileZilla"; // collection of paths
path = Environment.ExpandEnvironmentVariables(path);
Console.WriteLine(path);
%ALLUSERSPROFILE% C:\ProgramData
%APPDATA% C:\Users\Username\AppData\Roaming
%COMMONPROGRAMFILES% C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)% C:\Program Files (x86)\Common Files
%COMSPEC% C:\Windows\System32\cmd.exe
%HOMEDRIVE% C:
%HOMEPATH% C:\Users\Username
%LOCALAPPDATA% C:\Users\Username\AppData\Local
%PROGRAMDATA% C:\ProgramData
%PROGRAMFILES% C:\Program Files
%PROGRAMFILES(X86)% C:\Program Files (x86) (only in 64-bit version)
%PUBLIC% C:\Users\Public
%SystemDrive% C:
%SystemRoot% C:\Windows
%TEMP% and %TMP% C:\Users\Username\AppData\Local\Temp
%USERPROFILE% C:\Users\Username
%WINDIR% C:\Windows
ASP.NET을 사용하는 경우 경로가 다릅니다.
ASP.NET용 /App_Data를 가리키는 'SpecialFolder' 값을 찾을 수 없습니다.
대신 다음 작업을 수행해야 합니다.
HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data")
(참고: MVC 컨트롤러에는 'Current' 속성이 필요하지 않습니다.)
더 '추상적인' 방법이 있다면,App_Data방법을 듣고 싶습니다.
사용할 수도 있습니다.
Environment.ExpandEnvironmentVariables("%AppData%\\DateLinks.xml");
확장하기 위해%AppData%변수.
.net2.0에서 변수를 사용할 수 있습니다.Application.UserAppDataPath
AppData ⇝ Local(로컬)C:\Users\<user>\AppData\Local):
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
AppData ⇝ 로밍 (C:\Users\<user>\AppData\Roaming):
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
또한 다음 사항을 쉽게 알 수 있습니다.
Environment.SpecialFolder.ProgramFiles프로그램 파일 X64 폴더의 경우Environment.SpecialFolder.ProgramFilesX86프로그램 파일 X86 폴더의 경우
전체 목록은 여기에서 확인하십시오.
그런 문자열에 %AppData%를 넣는 것은 효과가 없을 것 같습니다.
해라
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString()
누군가 이것이 필요할 경우를 대비하여 제 mvc 애플리케이션의 'App_Data' 폴더에 액세스하는 다른 방법을 공유하고 싶었습니다.
Path.Combine(HttpRuntime.AppDomainAppPath,"App_Data")
이것은 콘솔 애플리케이션에서 저에게 효과가 있습니다.
string appData = System.Environment.GetEnvironmentVariable("APPDATA");
입니다.NET의 경우Load User Profile앱 풀에서 설정해야 하지만 그것만으로는 충분하지 않습니다.이이지정숨설있겨다습니정이진라는 이름의 숨겨진 .setProfileEnvironment\Windows\System32\inetsrv\Config\applicationHost.config이 기능은 설명서에 설명된 것처럼 켜지는 대신 기본적으로 해제됩니다.기본값을 변경하거나 앱 풀에서 설정할 수 있습니다.의 모든 방법Environment그러면 클래스가 올바른 값을 반환합니다.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
언급URL : https://stackoverflow.com/questions/867485/c-sharp-getting-the-path-of-appdata
'programing' 카테고리의 다른 글
| 1.8.3에서 Gitstash pop 특정 스택을 어떻게 저장합니까? (0) | 2023.05.24 |
|---|---|
| Angular 2: 브라우저를 통해 새로 고칠 때 404 오류가 발생합니다. (0) | 2023.05.24 |
| 디스크에서 파일을 삭제하지 않고 어떻게 파일을 전송합니까? (0) | 2023.05.24 |
| Excel 셀에서 형식이 지정된 텍스트에 태그가 있는 HTML 텍스트 (0) | 2023.05.24 |
| 성능 테스트를 위한 정확한 시간 측정 (0) | 2023.05.24 |