C #이 % AppData %의 경로를 얻는 중
C # 2008 SP1
아래 코드를 사용하고 있습니다 :
dt.ReadXml("%AppData%\\DateLinks.xml");
그러나 응용 프로그램이 실행되는 위치를 가리키는 예외가 발생합니다.
경로 'D : \ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \ % AppData % \ DateLinks.xml'의 일부를 찾을 수 없습니다.
%AppData%
상대 경로를 찾아야 한다고 생각했습니다 . Start|Run|%AppData%
Windows 탐색기 로 이동하면 해당 디렉토리로 이동합니다.
각 클라이언트 컴퓨터에서 사용자가 다르기 때문에 전체 경로를 넣을 수 없습니다.
AppData 디렉토리 를 가져 오려면 다음 GetFolderPath
방법 을 사용하는 것이 가장 좋습니다 .
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
( using System
없는 경우 추가해야 함 ).
%AppData%
는 환경 변수이며 .NET의 어느 곳에서나 자동으로 확장되지 않지만 Environment.ExpandEnvironmentVariable
메서드를 명시 적으로 사용할 수는 있습니다 . GetFolderPath
그러나 Johannes Rössel이 의견에서 지적했듯이 %AppData%
특정 상황에서는 설정되지 않을 수 있기 때문에 여전히 사용하는 것이 좋습니다 .
마지막으로 예제와 같이 경로를 만들려면
var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "DateLinks.xml");
ASP.NET을 사용하는 경우 경로가 다릅니다.
ASP.NET에 대해 / App_Data를 가리키는 'SpecialFolder'값을 찾을 수 없습니다.
대신이 작업을 수행해야합니다.
HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data")
(참고 : MVC 컨트롤러에는 '현재'속성이 필요하지 않습니다.)
또 다른 '추상적 인'방법이 있다면 App_Data
어떻게 듣는지 좋아할 것입니다.
BEST 의 AppData 디렉토리를 사용하는 방법은, IS 사용하는 Environment.ExpandEnvironmentVariable
방법.
원인:
- 문자열의 일부를 유효한 디렉토리 또는 다른 것으로 바꿉니다.
- 대소 문자를 구분하지 않습니다
- 쉽고 간단합니다
- 그것은 표준입니다
- 사용자 입력 처리에 적합
예 :
string path;
path = @"%AppData%\stuff";
path = @"%aPpdAtA%\HelloWorld";
path = @"%progRAMfiLES%\Adobe;%appdata%\FileZilla"; // collection of paths
path = Environment.ExpandEnvironmentVariables(path);
Console.WriteLine(path);
일부 사용자는 %AppData%
, 일부 %appdata%
및 일부는 기억하고 %APpData%
싶지 않습니다.
if (path.ToLower().StartsWith("%appdata%"))
; // path manipulation
if (path.ToLower().StartsWith("%programfiles%"))
; // path manipulation
환경 변수가 설정되어 있지 않은 경우 ( IS 이외의 경우) 결함이 아닙니다 . 나는 보통 사람들을 말하지 마 하지 내가 먼저 다른 길을 가서는 나쁜 생각 이었다는 것을 깨달았다 - 재 발명 바퀴를하지만 후.
당신은 또한 사용할 수 있습니다
Environment.ExpandEnvironmentVariables("%AppData%\\DateLinks.xml");
%AppData%
변수 를 확장합니다 .
.net2.0에서는 변수를 사용할 수 있습니다 Application.UserAppDataPath
% AppData %를 문자열에 넣는 것은 효과가 없다고 생각합니다.
시험
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString()
누군가가 이것을 필요로하는 경우 내 mvc 응용 프로그램의 'App_Data'폴더에 액세스하는 다른 방법을 공유하고 싶었습니다.
Path.Combine(HttpRuntime.AppDomainAppPath,"App_Data")
이것은 콘솔 응용 프로그램에서 나를 위해 일하고 있습니다.
string appData = System.Environment.GetEnvironmentVariable("APPDATA");
ASP.NET의 Load User Profile
경우 앱 풀 에서 설정을 설정해야하지만 충분하지 않습니다. 에 숨겨진 설정이 setProfileEnvironment
있으며 \Windows\System32\inetsrv\Config\applicationHost.config
, 설명서에 설명 된대로 어떤 이유로 든 기본적으로 해제되어 있습니다 . 기본값을 변경하거나 앱 풀에서 기본값을 설정할 수 있습니다. Environment
클래스의 모든 메소드는 적절한 값을 리턴합니다.
참고 URL : https://stackoverflow.com/questions/867485/c-sharp-getting-the-path-of-appdata
'development' 카테고리의 다른 글
두 번째 항목 (정수 값)으로 튜플 목록 정렬 (0) | 2020.02.28 |
---|---|
jQuery를 사용하여“disabled”속성을 제거하는 방법은 무엇입니까? (0) | 2020.02.28 |
Xcode 9“iPhone이 사용 중 : iPhone에 대한 디버거 지원 준비” (0) | 2020.02.28 |
C로 파일 크기를 얻으려면 어떻게해야합니까? (0) | 2020.02.28 |
val ()을 사용하여 select 값을 설정할 때 jquery change 이벤트가 트리거되지 않는 이유는 무엇입니까? (0) | 2020.02.27 |