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
- TrueCrypt代码 之 检查卷文件系统及去除卷只读属性
- 去除文件系统、只读等属性
- 物理卷pv、卷组vg、逻辑卷lv、文件系统及关系
- AIX文件系统基本之逻辑卷概念
- 存储技术之卷管理和文件系统
- 卷簇文件系统
- 文件系统/逻辑卷管理器
- 文件系统之文件系统设备与卷设备关系
- java核心技术卷 之框架属性
- TrueCrypt高阶教程-神奇的收藏加密卷
- TrueCrypt原理与系统开发(1):TrueCrypt Format创建加密卷
- TrueCrypt原理与系统开发(4):TrueCrypt Mount更改加密卷密码
- TrueCrypt原理与系统开发(1):TrueCrypt Format创建加密卷
- TrueCrypt原理与系统开发(4):TrueCrypt Mount更改加密卷密码
- TrueCrypt原理与系统开发(1):TrueCrypt Format创建加密卷
- TrueCrypt原理与系统开发(4):TrueCrypt Mount更改加密卷密码
- TrueCrypt原理与系统开发(1):TrueCrypt Format创建加密卷
- TrueCrypt代码 之 编码转换
- ubuntu下git安装及使用
- java邮件发送 easymail
- HDU3045 Picnic Cows
- 支付宝支付与微信支付
- java多态向上、向下转型问题
- TrueCrypt代码 之 检查卷文件系统及去除卷只读属性
- 从dmesg里分析core原因
- 使用python的yield实现任务调度.给定一个任务列表,每个任务轮流切换执行,类似于切片
- 学术工具-Citavi 简介
- STL中的sort
- Linux操作系统实时性学习总结
- MySQL主从复制
- C++ 编程题练习-Set(9-3)
- 解析心知天气API接口返回的json数据