// 获取快捷方式路径
char* getApplicationLnkLocation(HKEY locType , TCHAR lpValueName[])
{
HKEY hKey;
LONG nResult = 0;
DWORD dwSize = 0; // 数据长度
// char* reAppPath = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs";
TCHAR lpSubKey[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
//TCHAR lpValueName[] = "Common Programs";
nResult = RegOpenKeyEx(locType, lpSubKey, NULL, KEY_READ, &hKey);
if( nResult != ERROR_SUCCESS )
{
return NULL;
}
// 第一次调用,获取数据长度
RegQueryValueEx(hKey, lpValueName, NULL, NULL, NULL, &dwSize); // 缓冲区长度
// 动态分配缓冲区
LPBYTE dataBuf = new BYTE[dwSize];
// 第二次调用,获取数据
RegQueryValueEx(hKey, lpValueName, NULL, NULL, dataBuf, &dwSize);
// 关闭
RegCloseKey(hKey);
// 释放缓冲区
return (char*)dataBuf;
}
/*******************************
* 函数名:TraverseFolder
* 输入参数:lpPath(路径)
* 输入参数:lnk(用来保存找到的lnk文件名)
* 功能遍历文件夹函数
*********************************/
bool TraverseFolder(LPCTSTR lpPath,const char* lnk)
{
TCHAR szFind[MAX_PATH] = {_T("\0")};
WIN32_FIND_DATA findFileData;
BOOL bRet;
_tcscpy_s(szFind, MAX_PATH, lpPath);
_tcscat_s(szFind, _T("\\*.*")); //这里一定要指明通配符,不然不会读取所有文件和目录
HANDLE hFind = ::FindFirstFile(szFind, &findFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
return false;
}
//遍历文件夹
while (TRUE)
{
if (findFileData.cFileName[0] != _T('.'))
{//不是当前路径或者父目录的快捷方式
//_tprintf(_T("%s\\%s\n"), lpPath, findFileData.cFileName);
//printf("find name is %s \n", findFileData.cFileName);
if(!strcmp(findFileData.cFileName , lnk))
{
char buf[256] = {0};
sprintf(buf,"%s\\%s",lpPath, findFileData.cFileName);
ShellExecute(NULL,"open",buf,NULL,NULL,SW_SHOWNORMAL);
return true;
}
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{//这是一个普通目录
//设置下一个将要扫描的文件夹路径
_tcscpy_s(szFind, MAX_PATH, lpPath);
_tcscat_s(szFind, _T("\\"));
_tcscat_s(szFind, findFileData.cFileName);
//遍历该目录
if(TraverseFolder(szFind,lnk))
{
return true;
}
}
}
//如果是当前路径或者父目录的快捷方式,或者是普通目录,则寻找下一个目录或者文件
bRet = ::FindNextFile(hFind, &findFileData);
if (!bRet)
{
break;
}
}
::FindClose(hFind);
return false;
}
从新修改 查找本地所有快捷方式 针对上一个版本不支持WIN8
最新推荐文章于 2023-10-11 16:59:21 发布