2013. 10. 7. 18:39

[MFC] SHGetSpecialFolderPath() 함수를 이용한 각 폴더경로 가져오기

SHGetSpecialFolderPath() - 윈도우 특별한 폴더 경로

 

바탕화면, 즐겨찾기, 내 문서 등의 패스얻기

 

 

1.요약 

SHGetSpecialFolderPath()
를 이용하여 윈도우에서 사용하는 특별한 폴더들의 패스를 얻어오는 방법을 설명합니다.


2.본문 

SHGetSpecialFolderPath()
를 이용하면 윈도우에서 사용하는 특별한 폴더들의 패스를 얻어올 수 있습니다.

파라미터는 윈도우 핸들, 폴더이름을 복사할 버퍼, 패스 플래그, 생성 플래그입니다.

세번째와 네번째는 각각 얻고자하는 패스를 지정하는 플래그와 만약 폴더가 없다면 생성할 것인지를 지정하는 플래그입니다.

네번째 플레그가 NULL(0)이 아니고 폴더가 없다면 폴더를 생성합니다. 세번째 플래그는 다음과 같은 폴더를 지정합니다.(MSDN 참조) 

CSIDL_ADMINTOOLS 
Version 5.0. File system directory that is used to store administrative tools for an individual user. The Microsoft Management Console will save customized consoles to this directory and it will roam with the user.

 

CSIDL_ALTSTARTUP 
File system directory that corresponds to the user's nonlocalized Startup program group.

CSIDL_APPDATA 
File system directory that serves as a common repository for application-specific data. A common path is C:\WINNT\Profiles\username\Application Data.

 

CSIDL_BITBUCKET 
Virtual folder containing the objects in the user's Recycle Bin.

CSIDL_COMMON_ADMINTOOLS 
Version 5.0. File system directory containing containing administrative tools for all users of the computer.

 

CSIDL_COMMON_ALTSTARTUP 
File system directory that corresponds to the nonlocalized Startup program group for all users. Valid only for Windows NT? systems.

 

CSIDL_COMMON_APPDATA 
Version 5.0. Application data for all users. A common path is C:\WINNT\Profiles\All Users\Application Data.

 

CSIDL_COMMON_DESKTOPDIRECTORY 
File system directory that contains files and folders that appear on the desktop for all users. A common path is C:\WINNT\Profiles\All Users\Desktop. Valid only for Windows NT? systems.

 

CSIDL_COMMON_DOCUMENTS 
File system directory that contains documents that are common to all users. A common path is C:\WINNT\Profiles\All Users\Documents. Valid only for Windows NT? systems.

 

CSIDL_COMMON_FAVORITES 
File system directory that serves as a common repository for all users' favorite items. Valid only for Windows NT? systems.

 

CSIDL_COMMON_PROGRAMS 
File system directory that contains the directories for the common program groups that appear on the Start menu for all users. A common path is c:\WINNT\Profiles\All Users\Start Menu\Programs. Valid only for Windows NT? systems.

 

CSIDL_COMMON_STARTMENU 
File system directory that contains the programs and folders that appear on the Start menu for all users. A common path is C:\WINNT\Profiles\All Users\Start Menu. Valid only for Windows NT? systems.

 

CSIDL_COMMON_STARTUP 
File system directory that contains the programs that appear in the Startup folder for all users. A common path is C:\WINNT\Profiles\All Users\Start Menu\Programs\Startup. Valid only for Windows NT? systems.

 

CSIDL_COMMON_TEMPLATES 
File system directory that contains the templates that are available to all users. A common path is C:\WINNT\Profiles\All Users\Templates. Valid only for Windows NT? systems.

 

CSIDL_CONTROLS 
Virtual folder containing icons for the Control Panel applications.

 

CSIDL_COOKIES 
File system directory that serves as a common repository for Internet cookies. A common path is C:\WINNT\Profiles\username\Cookies.

 

CSIDL_DESKTOP 
Windows Desktopvirtual folder that is the root of the namespace.

 

CSIDL_DESKTOPDIRECTORY 
File system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A common path is C:\WINNT\Profiles\username\Desktop

 

CSIDL_DRIVES 
My Computer
virtual folder containing everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives.

 

CSIDL_FAVORITES 
File system directory that serves as a common repository for the user's favorite items. A common path is C:\WINNT\Profiles\username\Favorites.

 

CSIDL_FONTS 
Virtual folder containing fonts. A common path is C:\WINNT\Fonts.

 

CSIDL_HISTORY 
File system directory that serves as a common repository for Internet history items.

 

CSIDL_INTERNET 
Virtual folder representing the Internet.

 

CSIDL_INTERNET_CACHE 
File system directory that serves as a common repository for temporary Internet files. A common path is C:\WINNT\Profiles\username\Temporary Internet Files.

 

CSIDL_LOCAL_APPDATA 
Version 5.0. File system directory that serves as a data repository for local (non-roaming) applications. A common path is C:\WINNT\Profiles\username\Local Settings\Application Data.

 

CSIDL_MYPICTURES 
Version 5.0. My Pictures folder. A common path is C:\WINNT\Profiles\username\My Documents\My Pictures.

 

CSIDL_NETHOOD 
File system directory containing objects that appear in the network neighborhood. A common path is

C:\WINNT\Profiles\username\NetHood.

 

CSIDL_NETWORK 
Network Neighborhoodvirtual folder representing the top level of the network hierarchy.

 

CSIDL_PERSONAL 
File system directory that serves as a common repository for documents. A common path is C:\WINNT\Profiles\username\My Documents.

 

CSIDL_PRINTERS 
Virtual folder containing installed printers.

 

CSIDL_PRINTHOOD 
File system directory that serves as a common repository for printer links. A common path is C:\WINNT\Profiles\username\PrintHood.

 

CSIDL_PROFILE 
Version 5.0. User's profile folder.

 

CSIDL_PROGRAM_FILES 
Version 5.0. Program Files folder. A common path is C:\Program Files.

 

CSIDL_PROGRAM_FILES_COMMON 
Version 5.0. Program Files folder that is common to all users. A common path is C:\Program Files\Common. Valid only for Windows NT? systems.

 

CSIDL_PROGRAM_FILES_COMMONX86 
Version 5.0. Program Files folder that is common to all users for x86 applications on RISC systems. A common path is C:\Program Files (x86)\Common.

 

CSIDL_PROGRAM_FILESX86 
Version 5.0. Program Files folder for x86 applications on RISC systems. Corresponds to the %PROGRAMFILES(X86)% environment variable. A common path is C:\Program Files (x86).

 

CSIDL_PROGRAMS 
File system directory that contains the user's program groups (which are also file system directories). A common path is C:\WINNT\Profiles\username\Start Menu\Programs.

 

CSIDL_RECENT 
File system directory that contains the user's most recently used documents. A common path is C:\WINNT\Profiles\username\Recent. To create a shortcut in this folder, use SHAddToRecentDocs. In addition to creating the shortcut, this function updates the shell's list of recent documents and adds the shortcut to the Documents submenu of the Start menu.

 

CSIDL_SENDTO 
File system directory that contains Send To menu items. A common path is c:\WINNT\Profiles\username\SendTo.

 

CSIDL_STARTMENU 
File system directory containing Start menu items. A common path is c:\WINNT\Profiles\username\Start Menu.

 

CSIDL_STARTUP 
File system directory that corresponds to the user's Startup program group. The system starts these programs whenever any user logs onto Windows NT? or starts Windows? 95. A common path is C:\WINNT\Profiles\username\Start Menu\Programs\Startup.

 

CSIDL_SYSTEM 
Version 5.0. System folder. A common path is C:\WINNT\SYSTEM32.

 

CSIDL_SYSTEMX86 
Version 5.0. System folder for x86 applications on RISC systems. A common path is C:\WINNT\SYS32X86.

 

CSIDL_TEMPLATES 
File system directory that serves as a common repository for document templates.

 

CSIDL_WINDOWS 
Version 5.0. Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A common path is C:\WINNT.

 


3.예제


// 
바탕화면의 패스얻기

char pBuffer[MAX_PATH]; 
SHGetSpecialFolderPath(GetSafeHwnd(), 
(LPWSTR)pBuffer, CSIDL_DESKTOP, 0); 

AfxMessageBox((LPCTSTR)pBuffer);


4. Window Vista 이후 버젼은 SHGetKnownFolderPath() 함수를 사용