본문 바로가기
개발 이야기/C# 이야기

C# Environment.SpecialFolder 를 이용한 경로 가져오기

by 런던살자 2019. 6. 25.

안녕하세요 마블랑입니다.

 

C# 에 대한 자료를 찾던 중에 우연히 괜찮은 정보를 알게되었습니다.

 

윈도우에서 사용하는 특정 폴더의 경로를 가져오는 기능인데요 

 

내문서라든가 사진, 음악 등등 사용자 폴더도 있으며 Program Files 처럼 시스템 폴더의 경로도 가져올수 있습니다.

 

 

아래와 같이 특정 폴더명을 가져올수 있습니다.

 

 

코드는 정말 간단합니다.

using System;

namespace Console_Test_003_4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("");
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Programs));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Startup));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Recent));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.SendTo));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyComputer));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Templates));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.PrinterShortcuts));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.History));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Windows));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.System));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonTemplates));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonAdminTools));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.AdminTools));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Resources));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.LocalizedResources));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CommonOemLinks));
            Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.CDBurning));
            Console.WriteLine("");
        }
    }
}

 

화면에 보이는것처럼 Environment.GetFolderPath() 의 매개변수로 가져오고 싶은 경로의 열거형을 넣은면 됩니다.

 

각 폴더의 열거형은 Visual Studio에서 정의해논것을 그대로 가져왔습니다.

 

검색을 통해 찾아서 사용하시기 바랍니다.

  //
            // 요약:
            //     실제 파일 시스템 위치가 아니라 논리 데스크톱입니다.
            Desktop = 0,
            //
            // 요약:
            //     사용자의 프로그램 그룹이 들어 있는 디렉터리입니다.
            Programs = 2,
            //
            // 요약:
            //     문서에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            Personal = 5,
            //
            // 요약:
            //     내 문서 폴더입니다.
            MyDocuments = 5,
            //
            // 요약:
            //     사용자가 즐겨찾는 항목에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            Favorites = 6,
            //
            // 요약:
            //     사용자의 시작 프로그램 그룹에 해당하는 디렉터리입니다.
            Startup = 7,
            //
            // 요약:
            //     사용자가 가장 최근에 사용한 문서가 들어 있는 디렉터리입니다.
            Recent = 8,
            //
            // 요약:
            //     보내기 메뉴 항목이 들어 있는 디렉터리입니다.
            SendTo = 9,
            //
            // 요약:
            //     시작 메뉴 항목이 들어 있는 디렉터리입니다.
            StartMenu = 11,
            //
            // 요약:
            //     내 음악 폴더입니다.
            MyMusic = 13,
            //
            // 요약:
            //     사용자에 속한 동영상의 리포지토리로 사용되는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            MyVideos = 14,
            //
            // 요약:
            //     데스크톱에서 실제로 파일 개체를 저장하는 데 사용되는 디렉터리입니다.
            DesktopDirectory = 16,
            //
            // 요약:
            //     내 컴퓨터 폴더입니다.
            MyComputer = 17,
            //
            // 요약:
            //     네트워크 환경 가상 폴더에 있을 수 있는 링크 개체가 들어 있는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            NetworkShortcuts = 19,
            //
            // 요약:
            //     글꼴이 들어 있는 가상 폴더입니다. .NET Framework 4에 추가되었습니다.
            Fonts = 20,
            //
            // 요약:
            //     문서 템플릿에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            Templates = 21,
            //
            // 요약:
            //     모든 사용자의 시작 메뉴에 나타나는 프로그램 및 폴더가 들어 있는 파일 시스템 디렉터리입니다. 이 특수 폴더는 Windows NT 시스템에서만
            //     사용할 수 있습니다. .NET Framework 4에 추가되었습니다.
            CommonStartMenu = 22,
            //
            // 요약:
            //     응용 프로그램 간에 공유되는 구성 요소에 대한 폴더입니다. 이 특수 폴더는 Windows NT, Windows 2000 및 Windows
            //     XP 시스템에서만 사용할 수 있습니다. .NET Framework 4에 추가되었습니다.
            CommonPrograms = 23,
            //
            // 요약:
            //     모든 사용자의 시작 폴더에 나타나는 프로그램이 들어 있는 파일 시스템 디렉터리입니다. 이 특수 폴더는 Windows NT 시스템에서만 사용할
            //     수 있습니다. .NET Framework 4에 추가되었습니다.
            CommonStartup = 24,
            //
            // 요약:
            //     모든 사용자의 바탕 화면에 나타나는 파일 및 폴더가 들어 있는 파일 시스템 디렉터리입니다. 이 특수 폴더는 Windows NT 시스템에서만
            //     사용할 수 있습니다. .NET Framework 4에 추가되었습니다.
            CommonDesktopDirectory = 25,
            //
            // 요약:
            //     현재 로밍 사용자의 응용 프로그램 관련 데이터에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            ApplicationData = 26,
            //
            // 요약:
            //     프린터 가상 폴더에 있을 수 있는 링크 개체가 들어 있는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            PrinterShortcuts = 27,
            //
            // 요약:
            //     현재 로밍하지 않은 사용자가 사용하는 응용 프로그램 관련 데이터에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            LocalApplicationData = 28,
            //
            // 요약:
            //     임시 인터넷 파일에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            InternetCache = 32,
            //
            // 요약:
            //     인터넷 쿠키에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            Cookies = 33,
            //
            // 요약:
            //     인터넷 기록 항목에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            History = 34,
            //
            // 요약:
            //     모든 사용자가 사용하는 응용 프로그램 관련 데이터에 대한 공용 리포지토리로 사용되는 디렉터리입니다.
            CommonApplicationData = 35,
            //
            // 요약:
            //     Windows 디렉터리 또는 SYSROOT입니다. %windir% 또는 %SYSTEMROOT% 환경 변수에 해당합니다. .NET Framework
            //     4에 추가되었습니다.
            Windows = 36,
            //
            // 요약:
            //     시스템 디렉터리입니다.
            System = 37,
            //
            // 요약:
            //     프로그램 파일 디렉터리입니다. x86 이외의 시스템에서 System.Environment.SpecialFolder.ProgramFiles를
            //     System.Environment.GetFolderPath(System.Environment.SpecialFolder) 메서드로 전달하면
            //     x86이 아닌 프로그램의 경로가 반환됩니다. 비 x86 시스템의 x86 프로그램 파일 디렉터리를 가져오려면 System.Environment.SpecialFolder.ProgramFilesX86
            //     멤버를 사용합니다.
            ProgramFiles = 38,
            //
            // 요약:
            //     내 그림 폴더입니다.
            MyPictures = 39,
            //
            // 요약:
            //     사용자의 프로필 폴더입니다. 응용 프로그램에서는 이 수준에 파일이나 폴더를 만들 수 없으며 System.Environment.SpecialFolder.ApplicationData에서
            //     참조되는 위치 아래에 데이터를 두어야 합니다. .NET Framework 4에 추가되었습니다.
            UserProfile = 40,
            //
            // 요약:
            //     Windows System 폴더입니다. .NET Framework 4에 추가되었습니다.
            SystemX86 = 41,
            //
            // 요약:
            //     x86 Program Files 폴더입니다. .NET Framework 4에 추가되었습니다.
            ProgramFilesX86 = 42,
            //
            // 요약:
            //     전체 응용 프로그램에서 공유되는 구성 요소에 대한 디렉터리입니다. 비 x86 시스템의 x86 공통 프로그램 파일 디렉터리를 가져오려면 System.Environment.SpecialFolder.ProgramFilesX86
            //     멤버를 사용합니다.
            CommonProgramFiles = 43,
            //
            // 요약:
            //     Program Files 폴더입니다. .NET Framework 4에 추가되었습니다.
            CommonProgramFilesX86 = 44,
            //
            // 요약:
            //     모든 사용자가 사용할 수 있는 템플릿이 들어 있는 파일 시스템 디렉터리입니다. 이 특수 폴더는 Windows NT 시스템에서만 사용할 수
            //     있습니다. .NET Framework 4에 추가되었습니다.
            CommonTemplates = 45,
            //
            // 요약:
            //     모든 사용자에게 공통된 문서가 들어 있는 파일 시스템 디렉터리입니다. 이 특수 폴더는 Shfolder.dll이 설치된 Windows NT
            //     시스템, Windows 95 및 Windows 98 시스템에서 사용할 수 있습니다. .NET Framework 4에 추가되었습니다.
            CommonDocuments = 46,
            //
            // 요약:
            //     컴퓨터의 모든 사용자를 위한 관리 도구가 들어 있는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            CommonAdminTools = 47,
            //
            // 요약:
            //     개별 사용자를 위한 관리 도구를 저장하는 데 사용되는 파일 시스템 디렉터리입니다. MMC(Microsoft Management Console)에서는
            //     사용자 지정 콘솔을 이 디렉터리에 저장하며 사용자와 로밍합니다. .NET Framework 4에 추가되었습니다.
            AdminTools = 48,
            //
            // 요약:
            //     모든 사용자에게 공통된 음악 파일의 리포지토리로 사용되는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            CommonMusic = 53,
            //
            // 요약:
            //     모든 사용자에게 공통된 이미지 파일의 리포지토리로 사용되는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            CommonPictures = 54,
            //
            // 요약:
            //     모든 사용자에게 공통된 비디오 파일의 리포지토리로 사용되는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            CommonVideos = 55,
            //
            // 요약:
            //     리소스 데이터가 들어 있는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            Resources = 56,
            //
            // 요약:
            //     지역화된 리소스 데이터가 들어 있는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            LocalizedResources = 57,
            //
            // 요약:
            //     이 값은 이전 버전과의 호환성을 위해 Windows Vista에서 인식되지만 특수 폴더 자체는 더 이상 사용되지 않습니다. .NET Framework
            //     4에 추가되었습니다.
            CommonOemLinks = 58,
            //
            // 요약:
            //     CD에 기록될 때까지 기다리는 파일을 위한 스테이징 영역으로 사용되는 파일 시스템 디렉터리입니다. .NET Framework 4에 추가되었습니다.
            CDBurning = 59

 

지금까지 배웠던 내용중에서 간단한 편에 속하는 거라 주기능으로 사용은 하기 힘들거 같지만 보조기능을 구현할 때 유용하게 쓰일듯합니다.

 

이상 마블랑이었습니다.

 

읽어주셔서 고맙습니다.

댓글