TrueCrypt代码 之 检查卷文件系统及去除卷只读属性

来源:互联网 发布:js二维数组的遍历 编辑:程序博客网 时间:2024/05/19 09:11

这两个操作是通过Windows自身提供的命令来实现,代码如下

void CheckFilesystem(int nDriveNo, BOOL bFixErrors){wchar_t szMsg[CC_LONG_PATH+1], szParam[CC_LONG_PATH+1];WCHAR szDriveRoot[] = { (WCHAR)('A' + nDriveNo), ':', 0 };if (bFixErrors && AskWarnYesNo("FILESYS_REPAIR_CONFIRM_BACKUP") == IDNO)return;swprintf(szMsg, GetString(bFixErrors ? "REPAIRING_FS" : "CHECKING_FS"), szDriveRoot);swprintf(szParam, bFixErrors ? L"/C echo %s & chkdsk %s /F /X & pause" : L"/C echo %s & chkdsk %s & pause", szMsg, szDriveRoot);ShellExecuteW(NULL, IsUnAdminButSupportUAC() ? L"runas" : L"open", L"cmd.exe", szParam, NULL, SW_SHOW);}BOOL RemoveDeviceWriteProtection(HWND hWnd, LPCWSTR lpVolumePath){int iDeviceNumber;int iPartitionNumber;WCHAR szTemp[CC_LONG_PATH+1];WCHAR szCmdBatch[CC_LONG_PATH+1];WCHAR szDiskpartScript[CC_LONG_PATH+1];if (swscanf(lpVolumePath, L"\\Device\\Harddisk%d\\Partition%d", &iDeviceNumber, &iPartitionNumber) != 2){return FALSE;}if (GetTempPathW(ARRAYSIZE(szTemp), szTemp) == 0){return FALSE;}swprintf_s(szCmdBatch, ARRAYSIZE(szCmdBatch), L"%s\\CnCrypt_Write_Protection_Removal.cmd", szTemp);swprintf_s(szDiskpartScript, ARRAYSIZE(szDiskpartScript), L"%s\\CnCrypt_Write_Protection_Removal.diskpart", szTemp);FILE *fFile = _wfopen(szCmdBatch, L"w");if (!fFile){handleWin32Error(hWnd);return FALSE;}fwprintf(fFile, L"@diskpart /s \"%s\"\n@pause\n@del \"%s\" \"%s\"", szDiskpartScript, szDiskpartScript, szCmdBatch);CheckFileStreamWriteErrors(fFile, szCmdBatch);fclose(fFile);fFile = _wfopen(szDiskpartScript, L"w");if (!fFile){handleWin32Error(hWnd);DeleteFileW(szCmdBatch);return FALSE;}fwprintf(fFile, L"select disk %d\nattributes disk clear readonly\n", iDeviceNumber);if (iPartitionNumber != 0){fwprintf(fFile, L"select partition %d\nattributes volume clear readonly\n", iPartitionNumber);}fwprintf(fFile, L"exit\n");CheckFileStreamWriteErrors(fFile, szDiskpartScript);fclose(fFile);ShellExecuteW(NULL, IsUnAdminButSupportUAC() ? L"runas" : L"open", szCmdBatch, NULL, NULL, SW_SHOW);return TRUE;}


0 0
原创粉丝点击