我想C:\Users\username\AppData\Roaming\appname
在用户卸载应用程序时删除该文件夹appname
。
首先,我使用以下代码获取路径C:\Users\username\AppData\Roaming
:
TCHAR dir[MAX_PATH];
dir[0] = '\0';
BOOL ok = SHGetSpecialFolderPath(NULL, dir, CSIDL_APPDATA, TRUE);
appname 定义为_T("appname")
第一个问题是:How to append "appname" to "dir"?
假设上述完成。然后我需要使用SHFileOperation
删除非空文件夹C:\Users\username\AppData\Roaming\appname
。所以我需要一个SHFILEOPSTRUCT
结构中的双空终止字符串。所以
How to get a double null-terminated string from the result of the first step? Just append _T("\0\0") to it?
更新:我可以TCHAR *dir2 = lstrcat(dir, appname);
用来获取路径。但是当我尝试使用时TCHAR *dir3 = lstrcat(dir2, _T("\0\0"));
,该文件夹并没有被删除。任何数量\0
都行不通。
ps:
如果我直接执行以下操作,我可以让它工作。问题是我希望它独立于用户。
TCHAR path[] = _T("C:\\Users\\username\\AppData\\Roaming\\appname");
memcpy(path + sizeof(path) / sizeof(TCHAR) - 1, _T("\0\0\0"), 3);