这两个操作是通过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 szDiskp