C++ 带有desktop.ini的自定义文件夹图标&;爽口

C++ 带有desktop.ini的自定义文件夹图标&;爽口,c++,windows,winapi,directory,C++,Windows,Winapi,Directory,我的任务是创建一个簿记程序,跟踪文件和文件夹读取时的一些统计信息。与Google Drive和OrtoiseSVN类似,文件夹和文件图标应反映某些更改。例如,某台计算机上未查看文件的USB具有“x”,而查看的文件具有“o” 我可以使用Windows API跟踪文件使用情况,并且可以通过desktop.ini文件[,,]更改图标(以及其他一些不错的选项) 在手动处理desktop.ini文件时,我成功地更改了图标、说明和其他有趣的东西。问题是,在Windows再次解析desktop.ini文件之前

我的任务是创建一个簿记程序,跟踪文件和文件夹读取时的一些统计信息。与Google Drive和OrtoiseSVN类似,文件夹和文件图标应反映某些更改。例如,某台计算机上未查看文件的USB具有“x”,而查看的文件具有“o”

我可以使用Windows API跟踪文件使用情况,并且可以通过desktop.ini文件[,,]更改图标(以及其他一些不错的选项)

在手动处理desktop.ini文件时,我成功地更改了图标、说明和其他有趣的东西。问题是,在Windows再次解析desktop.ini文件之前,新更改不会更新。这往往在几秒钟到几分钟之间不一致地发生。F5刷新不会强制重新分析,但会在发生重新分析时更新映像

如何强制Windows在C++程序中手动和(更重要)地重新分析DejtoP.INI文件?< /强>


<强>是否有一个替代的C++ Windows API可以更改文件夹图标?

> P>如果编辑DekPoto.INI,它将不会自动刷新。使用
SHGetSetFolderCustomSettings
写入:

SHFOLDERCUSTOMSETTINGS fcs = {0};
fcs.dwSize = sizeof(SHFOLDERCUSTOMSETTINGS);
fcs.dwMask = FCSM_ICONFILE;
fcs.pszIconFile = iconPath;
fcs.cchIconFile = 0;
fcs.iIconIndex = iconIndex;
SHGetSetFolderCustomSettings(&fcs, folderPath, FCS_FORCEWRITE);

如果您希望有不同的文件夹图标以区别地指示不同的状态(类似于SVN),则需要图标覆盖。更改文件夹图标不是合适的解决方案。文件夹图标中的更改将立即反映出来
如果您需要更多详细信息,请让我知道。

它有效!我使用的旧方法不会立即更新: