windows的commonfiles

// 需要 #include <Shlobj.h>
	char path[255];
	SHGetSpecialFolderPath(
		NULL,							// 保留
		path,							// 接受文件路径的字符串指针
		CSIDL_DESKTOPDIRECTORY,			// CSIDL 宏
		FALSE							// 如果文件夹不存在,则不创建文件夹
	);cout << "path = " << path << endl;

宏 介绍
CSIDL_ADMINTOOLS、CSIDL_COMMON_ADMINTOOLS 管理工具
CSIDL_ALTSTARTUP、 CSIDL_COMMON_STARTUP、CSIDL_STARTUP 程序 - 启动
CSIDL_APPDATA AppData
CSIDL_CDBURN_AREA 临时刻录文件夹
CSIDL_COMMON_TEMPLATES、CSIDL_TEMPLATES Templates
CSIDL_COMMON_APPDATA ProgramData
CSIDL_COMMON_DESKTOPDIRECTORY、CSIDL_DESKTOP、CSIDL_DESKTOPDIRECTORY 桌面
CSIDL_COMMON_DOCUMENTS、CSIDL_MYDOCUMENTS、CSIDL_PERSONAL 文档
CSIDL_COMMON_FAVORITES、CSIDL_FAVORITES 收藏夹
CSIDL_COMMON_MUSIC、CSIDL_MYMUSIC 音乐
CSIDL_COMMON_PICTURES、CSIDL_MYPICTURES 图片
CSIDL_COMMON_PROGRAMS、CSIDL_PROGRAMS 开始菜单 - 程序
CSIDL_COMMON_STARTMENU、CSIDL_STARTMENU 开始菜单
CSIDL_COMMON_VIDEO 、CSIDL_MYVIDEO 视频
CSIDL_COOKIES INetCookies
CSIDL_FONTS 字体
CSIDL_HISTORY 历史
CSIDL_INTERNET_CACHE INetCache
CSIDL_LOCAL_APPDATA AppData/Local
CSIDL_NETHOOD Network Shortcuts
CSIDL_PRINTHOOD Printer Shortcuts
CSIDL_PROFILE 当前用户(Administrator)
CSIDL_PROGRAM_FILES 、CSIDL_PROGRAM_FILESX86 Program Files
CSIDL_PROGRAM_FILES_COMMON、CSIDL_PROGRAM_FILES_COMMONX86 Common Files
CSIDL_RECENT 最近使用的项目
CSIDL_RESOURCES Resources
CSIDL_SENDTO 发送到
CSIDL_SYSTEM System32
CSIDL_SYSTEMX86 SysWOW64
CSIDL_WINDOWS Windows

获取common files的时候建议从注册表获取

//获取common files文件夹的位置judge 为1为programe file下的common files judge为0 为program files(x86)下的common file
void  GetCommonFiles(bool judge, std::string& outPath)
{
	char cmdLine[MAX_PATH];
	ZeroMemory(cmdLine, MAX_PATH);
	DWORD dwcount = 255;
	HKEY hKey;
	long ret1 = 0;
	ret1 = ::RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &hKey);
	if (ret1 != ERROR_SUCCESS)
	{
		::RegCloseKey(hKey);
		return;
	}
	else
	{
		DWORD resultDword{ 0 };
		if (judge) 
		{
			::RegQueryValueExA(hKey, "ProgramFilesDir", NULL, NULL, (BYTE*)&cmdLine[0], &dwcount);
		}
		else 
		{
			::RegQueryValueExA(hKey, "ProgramFilesDir (x86)", NULL, NULL, (BYTE*)&cmdLine[0], &dwcount);
		}
		
	}
	ZeroMemory(cmdLine + strlen(cmdLine), MAX_PATH - dwcount);
	RegCloseKey(hKey);


	outPath += cmdLine;
}

参考:
https://blog.csdn.net/Simon798/article/details/104068846

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值