Windows 內核禁止用戶態進程直接讀寫磁盤扇區(CreateFile("\\\\.\\PhysicalDrive0") 需管理員權限且受寫保護),直接操作極易導致數據損壞、系統崩潰。
#include
#include
bool createPartition(const char* disk, int sizeMB, char driveLetter) {
char script[512];
sprintf(script,
"select disk %s\n"
"create partition primary size=%d\n"
"format fs=ntfs quick\n"
"assign letter=%c\n",
disk, sizeMB, driveLetter);
FILE* fp = fopen("part_script.txt", "w");
fputs(script, fp); fclose(fp);
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
char cmd[260];
sprintf(cmd, "diskpart /s part_script.txt");
if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
return false;
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD exitCode; GetExitCodeProcess(pi.hProcess, &exitCode);
CloseHandle(pi.hProcess); CloseHandle(pi.hThread);
return exitCode == 0;
}
CreateProcess 隱藏窗口(si.wShowWindow = SW_HIDE)。Win32_DiskPartition) 或 Storage Management API 獲得更豐富的控制。