首页
社区
课程
招聘
使用SetupIterateCabinet函数导出.cap文件
发表于: 2013-5-26 14:59 6109

使用SetupIterateCabinet函数导出.cap文件

2013-5-26 14:59
6109

#include <Windows.h>
#include <Stdio.h>
#include <Tchar.h>
#include <Setupapi.h>
#pragma comment(lib, "Setupapi.lib")

UINT CALLBACK MsgHandler(
    PVOID Context,
    UINT Notification,
    UINT_PTR Param1,
    UINT_PTR Param2
)
{
        switch(Notification)
        {
        case SPFILENOTIFY_FILEINCABINET://在cabinet里查找每个文件,返回FILEOP_SKIP跳过它、FILEOP_DOIT导出文件
                {
                        PFILE_IN_CABINET_INFO        pFileInCabinetInfo = (PFILE_IN_CABINET_INFO)Param1;
                        LPTSTR                                        pCabinetFile = (LPTSTR)Param2;
                        LPTSTR                                        pDir = (LPTSTR)Context;
                        TCHAR                                        szFile[MAX_PATH];

                        lstrcpy(szFile, pDir);
                        lstrcat(szFile, _T("\\"));
                        lstrcat(szFile, pFileInCabinetInfo->NameInCabinet);

                        lstrcpy(pFileInCabinetInfo->FullTargetName, szFile);//将导出的文件路径到FullTargetName里
                }
                return FILEOP_DOIT;
        case SPFILENOTIFY_FILEEXTRACTED://从cabinet导出文件
                {
                        PFILEPATHS                                pFilePathInfo = (PFILEPATHS)Param1;
                       
                }
                return NO_ERROR;
        default:
                return NO_ERROR;
        }
}

int _tmain(int argc, TCHAR *argv[])
{
        CreateDirectory(_T("C:\\123"), NULL);
        SetupIterateCabinet(_T("C:\\123.cap"), 0, MsgHandler, _T("C:\\123"));

        return 0;
}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 5
支持
分享
最新回复 (2)
雪    币: 47147
活跃值: (20455)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
分享蛮好的,为啥要删除?
2013-5-26 16:24
0
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
3
不好,还是删掉好一点
2013-5-26 16:27
0
游客
登录 | 注册 方可回帖
返回
//