Visual Studio 历史记录一键清理(C语言版)
Visual Studio 历史记录清理方法来自 https://developer.aliyun.com/article/1334856
原文中关于使用批处理来一键清理的代码已经写出,但咱就是爱折腾,以下为C语言代码实现(考虑现在都VS2026了,旧版清理注册表的方式就忽略了,仅删除ApplicationPrivateSettings.xml):
点击查看代码
#include <Windows.h>
#include <ShlObj.h> // SHFileOperation需要它
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
// 使用Windows API展开%localappdata%\\Microsoft\\VisualStudio
// 定义一个缓冲区,用于存储展开后的路径
TCHAR szPath[MAX_PATH];
ExpandEnvironmentStrings(L"%localappdata%\\Microsoft\\VisualStudio", szPath, MAX_PATH);
// 搜索szPath目录及其子目录下的ApplicationPrivateSettings.xml文件
// 如果找到了,就删除至回收站
// 如果找不到,就弹出一个消息框
// 定义一个缓冲区,用于存储搜索路径
TCHAR searchPath[MAX_PATH];
wsprintf(searchPath, L"%s\\*.*", szPath);
WIN32_FIND_DATA findData;
HANDLE hFind = FindFirstFile(searchPath, &findData);
if (hFind == INVALID_HANDLE_VALUE)
{
// 如果搜索失败,使用Windows API函数MessageBox()弹出一个消息框
MessageBox(NULL, L"未找到ApplicationPrivateSettings.xml文件", L"CleanVSrecent", MB_OK);
}
else
{
BOOL found = FALSE;
do
{
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// 忽略"."和".."目录
if (lstrcmp(findData.cFileName, L".") != 0 && lstrcmp(findData.cFileName, L"..") != 0)
{
// 递归搜索子目录
TCHAR subDirPath[MAX_PATH];
wsprintf(subDirPath, L"%s\\%s", szPath, findData.cFileName);
TCHAR subSearchPath[MAX_PATH];
wsprintf(subSearchPath, L"%s\\ApplicationPrivateSettings.xml", subDirPath);
WIN32_FIND_DATA subFindData;
HANDLE hSubFind = FindFirstFile(subSearchPath, &subFindData);
if (hSubFind != INVALID_HANDLE_VALUE)
{
found = TRUE;
FindClose(hSubFind);
// 打印找到的文件路径
//MessageBox(NULL, subSearchPath, L"CleanVSrecent", MB_OK);
// 在路径后面加上一个空字符,以便SHFileOperation()函数识别路径结束
subSearchPath[lstrlen(subSearchPath) + 1] = '\0';
// 删除文件至回收站
SHFILEOPSTRUCT fileOp;
ZeroMemory(&fileOp, sizeof(SHFILEOPSTRUCT));
fileOp.wFunc = FO_DELETE;
fileOp.pFrom = subSearchPath;
fileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;
int result = SHFileOperation(&fileOp);
if (result != 0)
{
MessageBox(NULL, L"删除ApplicationPrivateSettings.xml文件失败", L"CleanVSrecent", MB_OK | MB_SYSTEMMODAL);
}
else
{
MessageBox(NULL, L"找到并删除ApplicationPrivateSettings.xml文件", L"CleanVSrecent", MB_OK | MB_SYSTEMMODAL);
}
break;
}
}
}
} while (FindNextFile(hFind, &findData));
if (!found)
{
MessageBox(NULL, L"未找到ApplicationPrivateSettings.xml文件", L"CleanVSrecent", MB_OK | MB_SYSTEMMODAL);
}
FindClose(hFind);
}
// 返回0表示程序正常退出
return 0;
}
点此下载已经编译好的程序

浙公网安备 33010602011771号