Skip to content

WindowsApi:SHFileOperation

Copies, moves, renames, or deletes a file system object. This function has been replaced in Windows Vista by IFileOperation.

Recursive remove

void deleteDirectory(const std::wstring &path) {
  SHFILEOPSTRUCTW fileOperation;
  fileOperation.wFunc = FO_DELETE;
  fileOperation.pFrom = path.c_str();
  fileOperation.fFlags = FOF_NO_UI | FOF_NOCONFIRMATION;

  int result = ::SHFileOperationW(&fileOperation);
  if(result != 0) {
    throw std::runtime_error("Could not delete directory");
  }
}

See also

Favorite site