File tree Expand file tree Collapse file tree 1 file changed +10
-8
lines changed Expand file tree Collapse file tree 1 file changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -1387,29 +1387,31 @@ std::error_code remove_directories(const Twine &path, bool IgnoreErrors) {
1387
1387
Path16.push_back (0 );
1388
1388
Path16.push_back (0 );
1389
1389
1390
- HRESULT HR = CoInitializeEx (NULL , COINIT_MULTITHREADED);
1390
+ HRESULT HR =
1391
+ CoInitializeEx (NULL , COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
1391
1392
if (SUCCEEDED (HR)) {
1392
- IFileOperation *FileOp;
1393
+ IFileOperation *FileOp = NULL ;
1393
1394
HR = CoCreateInstance (CLSID_FileOperation, NULL , CLSCTX_ALL,
1394
1395
IID_PPV_ARGS (&FileOp));
1395
1396
if (SUCCEEDED (HR)) {
1396
1397
HR = FileOp->SetOperationFlags (FOF_NO_UI | FOFX_NOCOPYHOOKS);
1397
1398
if (SUCCEEDED (HR)) {
1399
+ PIDLIST_ABSOLUTE PIDL = ILCreateFromPathW (Path16.data ());
1398
1400
IShellItem *ShItem = NULL ;
1399
- HR = SHCreateItemFromParsingName (Path16.data (), NULL ,
1400
- IID_PPV_ARGS (&ShItem));
1401
+ HR = SHCreateItemFromIDList (PIDL, IID_PPV_ARGS (&ShItem));
1401
1402
if (SUCCEEDED (HR)) {
1402
1403
HR = FileOp->DeleteItem (ShItem, NULL );
1404
+ if (SUCCEEDED (HR)) {
1405
+ HR = FileOp->PerformOperations ();
1406
+ }
1403
1407
ShItem->Release ();
1404
1408
}
1405
- if (SUCCEEDED (HR)) {
1406
- HR = FileOp->PerformOperations ();
1407
- }
1409
+ ILFree (PIDL);
1408
1410
}
1409
1411
FileOp->Release ();
1410
1412
}
1413
+ CoUninitialize ();
1411
1414
}
1412
- CoUninitialize ();
1413
1415
1414
1416
int result = FAILED (HR) ? HRESULT_CODE (HR) : 0 ;
1415
1417
if (result != 0 && !IgnoreErrors)
You can’t perform that action at this time.
0 commit comments