본문 바로가기

IT/C#

내문서 폴더 경로 알아내기

C# 내문서 폴더 경로 알아내는 코드

 

[code c#]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("GetFolderPath:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
        }
    }
}

[/code]
내문서 폴더라던가 내음악, System 폴더 등의 특수한 폴더는 절대경로를 가져올 수 없습니다.
사용자마다 다른 시스템명을 갖고 있기 때문입니다.
그러나 위의 코드처럼 해당 특수폴더에 대한 경로를 반환하는 메소드를 쓰면 간단히 해결할 수 있습니다.

Environment.GetFolderPath(); // 해당 폴더가 실제로 컴퓨터에 있으면 지정 폴더에 대한 경로를 반환합니다.
Environment.SpecialFolder.MyDocuments  // 열거형이며 시스템 특수 폴더에 대한 디렉터리 경로를 검색하는데 사용합니다.

Environment.SpecialFolder에 대한 자세한 사항은 MSDN에 자세히 나와있습니다. *^^*


[추가]
레지스트리에서 설정할 수도 있습니다.
[code c#]
using Microsoft.Win32;

namespace test
{
    class Program
    {
        public static void Main()
        {
           string strRegistry = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
            RegistryKey key = Registry.CurrentUser.OpenSubKey(strRegistry, false);
            string path = key.GetValue("Personal").ToString();

            Console.WriteLine("Path:{0}", path);

            }
        }
    }

[/code]

해당 레지스트리의 주소는 내문서 폴더 경로입니다. 내문서 폴더같은 경우는 위치를 옮길 수 있기 때문에 레지스트리키를 이용하여 값을 가져오고 GetValue 메소드를 이용하여 설정된 값을 가져올 수 있습니다.