わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

Windowsの特殊フォルダのパスを取得する

Windowsの特殊フォルダのパスを取得するには、SHGetSpecialFolderPath()関数を呼び出します。 第3引数に渡した、CSIDL_DESKTOPなどの値によって様々な特殊フォルダの情報を取得することができます。

第3引数のパラメータ

第3引数 取得できる内容
CSIDL_DESKTOP デスクトップのパス
CSIDL_DESKTOPDIRECTORY デスクトップのパス
CSIDL_STARTMENU スタートメニューのパス
CSIDL_PROGRAMS Program Filesのパス
CSIDL_STARTUP Startupのパス
CSIDL_ALTSTARTUP Startup(AllUser)のパス
CSIDL_PERSONAL My Documentsのパス
CSIDL_FAVORITES お気に入りのパス
CSIDL_RECENT ゴミ箱のパスを取得
CSIDL_SENDTO Sendtoのパス
CSIDL_NETHOOD NetHoodのバス
CSIDL_FONTS Fontsのバス
CSIDL_TEMPLATES ShellNewのバス
CSIDL_APPDATA AppDataのバス
CSIDL_PRINTHOOD PrintHoodのバス
CSIDL_INTERNET_CACHE INetキャッシュのパス
CSIDL_COOKIES INet Cookiesのパス
CSIDL_HISTORY 履歴のパス
CSIDL_COMMON_DESKTOPDIRECTORY デスクトップ(AllUser)のパス
CSIDL_COMMON_STARTMENU スタートメニュー(AllUser)のパス
CSIDL_COMMON_PROGRAMS Program Files(AllUser)のパス
CSIDL_COMMON_STARTUP スタートアップ(AllUser)のパス
CSIDL_COMMON_ALTSTARTUP スタートアップ(AllUser)のパス
CSIDL_COMMON_FAVORITES お気に入りのパス
Windowsの特殊フォルダのパスを取得する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <shlobj.h>
 
 
 
/*
    Windowsの特殊フォルダのパスを取得する
*/
int _tmain
(
      int argc
    , _TCHAR* argv[]
)
{
    /*
        std::wcoutのロケールを設定
         これを設定するだけで、std::wcoutで日本語が表示される
         ようになります。
    */
    std::wcout.imbue( std::locale( "", std::locale::ctype ) );
 
    // パス取得バッファ
    TCHAR waFolderPath[ MAX_PATH ];
 
    // デスクトップのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_DESKTOP, 0 );
    std::wcout << L"CSIDL_DESKTOP                 : " << waFolderPath << std::endl;
 
    // デスクトップのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_DESKTOPDIRECTORY, 0 );
    std::wcout << L"CSIDL_DESKTOPDIRECTORY        : " << waFolderPath << std::endl;
 
    // スタートメニューのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_STARTMENU, 0 );
    std::wcout << L"CSIDL_STARTMENU               : " << waFolderPath << std::endl;
 
    // Program Filesのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_PROGRAMS, 0 );
    std::wcout << L"CSIDL_PROGRAMS                : " << waFolderPath << std::endl;
 
    // Startupのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_STARTUP, 0 );
    std::wcout << L"CSIDL_STARTUP                 : " << waFolderPath << std::endl;
 
    // Startup(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_ALTSTARTUP, 0 );
    std::wcout << L"CSIDL_ALTSTARTUP              : " << waFolderPath << std::endl;
 
    // My Documentsのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_PERSONAL, 0 );
    std::wcout << L"CSIDL_PERSONAL                : " << waFolderPath << std::endl;
 
    // お気に入りのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_FAVORITES, 0 );
    std::wcout << L"CSIDL_FAVORITES               : " << waFolderPath << std::endl;
 
    // ゴミ箱のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_RECENT, 0 );
    std::wcout << L"CSIDL_RECENT                  : " << waFolderPath << std::endl;
 
    // Sendtoのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_SENDTO, 0 );
    std::wcout << L"CSIDL_SENDTO                  : " << waFolderPath << std::endl;
 
    // NetHoodのバスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_NETHOOD, 0 );
    std::wcout << L"CSIDL_NETHOOD                 : " << waFolderPath << std::endl;
 
    // Fontsのバスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_FONTS, 0 );
    std::wcout << L"CSIDL_FONTS                   : " << waFolderPath << std::endl;
 
    // ShellNewのバスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_TEMPLATES, 0 );
    std::wcout << L"CSIDL_TEMPLATES               : " << waFolderPath << std::endl;
 
    // AppDataのバスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_APPDATA, 0 );
    std::wcout << L"CSIDL_APPDATA                 : " << waFolderPath << std::endl;
 
    // PrintHoodのバスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_PRINTHOOD, 0 );
    std::wcout << L"CSIDL_PRINTHOOD               : " << waFolderPath << std::endl;
 
    // INetキャッシュのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_INTERNET_CACHE, 0 );
    std::wcout << L"CSIDL_INTERNET_CACHE          : " << waFolderPath << std::endl;
 
    // INet Cookiesのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COOKIES, 0 );
    std::wcout << L"CSIDL_COOKIES                 : " << waFolderPath << std::endl;
 
    // 履歴のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_HISTORY, 0 );
    std::wcout << L"CSIDL_HISTORY                 : " << waFolderPath << std::endl;
 
    // デスクトップ(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_DESKTOPDIRECTORY, 0 );
    std::wcout << L"CSIDL_COMMON_DESKTOPDIRECTORY : " << waFolderPath << std::endl;
 
    // スタートメニュー(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_STARTMENU, 0 );
    std::wcout << L"CSIDL_COMMON_STARTMENU        : " << waFolderPath << std::endl;
 
    // Program Files(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_PROGRAMS, 0 );
    std::wcout << L"CSIDL_COMMON_PROGRAMS         : " << waFolderPath << std::endl;
 
    // スタートアップ(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_STARTUP, 0 );
    std::wcout << L"CSIDL_COMMON_STARTUP          : " << waFolderPath << std::endl;
 
    // スタートアップ(AllUser)のパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_ALTSTARTUP, 0 );
    std::wcout << L"CSIDL_COMMON_ALTSTARTUP       : " << waFolderPath << std::endl;
 
    // お気に入りのパスを取得
    SHGetSpecialFolderPath( NULL, waFolderPath, CSIDL_COMMON_FAVORITES, 0 );
    std::wcout << L"CSIDL_COMMON_FAVORITES        : " << waFolderPath << std::endl;
 
    // 正常終了
    return( 0 );
}

実行結果

CSIDL_DESKTOP                 : C:\Users\testuser\Desktop
CSIDL_DESKTOPDIRECTORY        : C:\Users\testuser\Desktop
CSIDL_STARTMENU               : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Start Menu
CSIDL_PROGRAMS                : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
CSIDL_STARTUP                 : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
CSIDL_ALTSTARTUP              : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
CSIDL_PERSONAL                : C:\Users\testuser\Documents
CSIDL_FAVORITES               : C:\Users\testuser\Favorites
CSIDL_RECENT                  : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Recent
CSIDL_SENDTO                  : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\SendTo
CSIDL_NETHOOD                 : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Network Shortcuts
CSIDL_FONTS                   : C:\WINDOWS\Fonts
CSIDL_TEMPLATES               : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Templates
CSIDL_APPDATA                 : C:\Users\testuser\AppData\Roaming
CSIDL_PRINTHOOD               : C:\Users\testuser\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
CSIDL_INTERNET_CACHE          : C:\Users\testuser\AppData\Local\Microsoft\Windows\INetCache
CSIDL_COOKIES                 : C:\Users\testuser\AppData\Local\Microsoft\Windows\INetCookies
CSIDL_HISTORY                 : C:\Users\testuser\AppData\Local\Microsoft\Windows\History
CSIDL_COMMON_DESKTOPDIRECTORY : C:\Users\Public\Desktop
CSIDL_COMMON_STARTMENU        : C:\ProgramData\Microsoft\Windows\Start Menu
CSIDL_COMMON_PROGRAMS         : C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CSIDL_COMMON_STARTUP          : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CSIDL_COMMON_ALTSTARTUP       : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CSIDL_COMMON_FAVORITES        : C:\Users\testuser\Favorites






わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。