牛骨文教育服务平台(让学习变的简单)
博文笔记

比较完整的 WINDOWS 系统路径获取方法

创建时间:2014-09-03 投稿人: 浏览次数:4993

做WIN下面的开发,不可避免要用到一些系统路径,在开发 FreeEIM 时,用到的一些代码,比较完整的 WINDOWS 系统路径获取方法。

 

#include <Shlobj.h>
#include <stdio.h>
#include <locale.h>

int main()
{
	setlocale(LC_ALL, "chs");

	TCHAR szPath[MAX_PATH];

	int CSIDL[] = {
		CSIDL_ADMINTOOLS,		CSIDL_APPDATA,	CSIDL_CDBURN_AREA,		CSIDL_COMMON_ADMINTOOLS,	CSIDL_COMMON_APPDATA,
		CSIDL_COMMON_DESKTOPDIRECTORY,			CSIDL_COMMON_DOCUMENTS,	CSIDL_COMMON_FAVORITES,		CSIDL_COMMON_MUSIC,
		CSIDL_COMMON_PICTURES,	CSIDL_COMMON_PROGRAMS,	CSIDL_COMMON_STARTMENU, CSIDL_COMMON_STARTUP,
		CSIDL_COMMON_TEMPLATES, CSIDL_COMMON_VIDEO,		CSIDL_COOKIES,			CSIDL_FAVORITES,
		CSIDL_HISTORY,			CSIDL_INTERNET_CACHE,	CSIDL_LOCAL_APPDATA,	CSIDL_MYDOCUMENTS,
		CSIDL_MYMUSIC,			CSIDL_MYPICTURES,		CSIDL_MYVIDEO,			CSIDL_PROFILE,		CSIDL_PROGRAM_FILES,
		CSIDL_PROGRAM_FILES_COMMON,						CSIDL_PROGRAMS,			CSIDL_RECENT,		CSIDL_SENDTO,
		CSIDL_STARTMENU,		CSIDL_STARTUP,			CSIDL_SYSTEM,			CSIDL_TEMPLATES,	CSIDL_WINDOWS,
		0
	};

	for (int i=0;CSIDL[i];i++) {
		if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL[i], NULL, SHGFP_TYPE_CURRENT, szPath))) {
			wprintf(L"%d, %s
", i, szPath);
		}
	}

	return 0;
}


在XP上,用VS2010编译通过,如果是win7或者更高版本,应该用

HRESULT SHGetKnownFolderPath(
  _In_      REFKNOWNFOLDERID rfid,
  _In_      DWORD dwFlags,
  _In_opt_  HANDLE hToken,
  _Out_     PWSTR *ppszPath
);


以下是编译输出。

0, C:Documents and SettingsAdministrator「开始」菜单程序管理工具
1, C:Documents and SettingsAdministratorApplication Data
2, C:Documents and SettingsAdministratorLocal SettingsApplication DataMicrosoftCD Burning
3, C:Documents and SettingsAll Users「开始」菜单程序管理工具
4, C:Documents and SettingsAll UsersApplication Data
5, C:Documents and SettingsAll Users桌面
6, C:Documents and SettingsAll UsersDocuments
7, C:Documents and SettingsAll UsersFavorites
8, C:Documents and SettingsAll UsersDocumentsMy Music
9, C:Documents and SettingsAll UsersDocumentsMy Pictures
10, C:Documents and SettingsAll Users「开始」菜单程序
11, C:Documents and SettingsAll Users「开始」菜单
12, C:Documents and SettingsAll Users「开始」菜单程序启动
13, C:Documents and SettingsAll UsersTemplates
14, C:Documents and SettingsAll UsersDocumentsMy Videos
15, D:My DocumentsCookies
16, D:My DocumentsFavorites
17, C:Documents and SettingsAdministratorLocal SettingsHistory
18, C:Documents and SettingsAdministratorLocal SettingsTemporary Internet Files
19, C:Documents and SettingsAdministratorLocal SettingsApplication Data
20, D:My Documents
21, D:My DocumentsMy Music
22, D:My DocumentsMy Pictures
23, D:My DocumentsMy Videos
24, C:Documents and SettingsAdministrator
25, C:Program Files
26, C:Program FilesCommon Files
27, C:Documents and SettingsAdministrator「开始」菜单程序
28, C:Documents and SettingsAdministratorRecent
29, C:Documents and SettingsAdministratorSendTo
30, C:Documents and SettingsAdministrator「开始」菜单
31, C:Documents and SettingsAdministrator「开始」菜单程序启动
32, C:WINDOWSsystem32
33, C:Documents and SettingsAdministratorTemplates
34, C:WINDOWS


 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。