https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8ef8e41cc9483f7665666…
commit 8ef8e41cc9483f7665666641cfdd48f5d71a1a7c
Author:     Denis Malikov <Getequ(a)users.noreply.github.com>
AuthorDate: Wed Dec 15 21:42:47 2021 +0700
Commit:     GitHub <noreply(a)github.com>
CommitDate: Wed Dec 15 17:42:47 2021 +0300
    [SHELL32] Show error message if move or copy operation failed (#4155)
    This allows user to know when there is not enough space on the target media,
    when there is no permissions for the operation, or some other error.
    CORE-9239
---
 dll/win32/shell32/lang/bg-BG.rc |  2 ++
 dll/win32/shell32/lang/ca-ES.rc |  2 ++
 dll/win32/shell32/lang/cs-CZ.rc |  2 ++
 dll/win32/shell32/lang/da-DK.rc |  2 ++
 dll/win32/shell32/lang/de-DE.rc |  2 ++
 dll/win32/shell32/lang/el-GR.rc |  2 ++
 dll/win32/shell32/lang/en-GB.rc |  2 ++
 dll/win32/shell32/lang/en-US.rc |  2 ++
 dll/win32/shell32/lang/es-ES.rc |  2 ++
 dll/win32/shell32/lang/et-EE.rc |  2 ++
 dll/win32/shell32/lang/fi-FI.rc |  2 ++
 dll/win32/shell32/lang/fr-FR.rc |  2 ++
 dll/win32/shell32/lang/he-IL.rc |  2 ++
 dll/win32/shell32/lang/hi-IN.rc |  2 ++
 dll/win32/shell32/lang/hu-HU.rc |  2 ++
 dll/win32/shell32/lang/id-ID.rc |  2 ++
 dll/win32/shell32/lang/it-IT.rc |  2 ++
 dll/win32/shell32/lang/ja-JP.rc |  2 ++
 dll/win32/shell32/lang/ko-KR.rc |  2 ++
 dll/win32/shell32/lang/nl-NL.rc |  2 ++
 dll/win32/shell32/lang/no-NO.rc |  2 ++
 dll/win32/shell32/lang/pl-PL.rc |  2 ++
 dll/win32/shell32/lang/pt-BR.rc |  2 ++
 dll/win32/shell32/lang/pt-PT.rc |  2 ++
 dll/win32/shell32/lang/ro-RO.rc |  2 ++
 dll/win32/shell32/lang/ru-RU.rc |  6 +++--
 dll/win32/shell32/lang/sk-SK.rc |  2 ++
 dll/win32/shell32/lang/sl-SI.rc |  2 ++
 dll/win32/shell32/lang/sq-AL.rc |  2 ++
 dll/win32/shell32/lang/sv-SE.rc |  2 ++
 dll/win32/shell32/lang/tr-TR.rc |  2 ++
 dll/win32/shell32/lang/uk-UA.rc |  2 ++
 dll/win32/shell32/lang/zh-CN.rc |  2 ++
 dll/win32/shell32/lang/zh-TW.rc |  2 ++
 dll/win32/shell32/shlfileop.cpp | 51 +++++++++++++++++++++++++++++++++++++++++
 dll/win32/shell32/shresdef.h    |  2 ++
 36 files changed, 123 insertions(+), 2 deletions(-)
diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc
index 29053c2ddcd..703d1837dad 100644
--- a/dll/win32/shell32/lang/bg-BG.rc
+++ b/dll/win32/shell32/lang/bg-BG.rc
@@ -806,6 +806,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc
index 6262d5a19ee..12063262bc3 100644
--- a/dll/win32/shell32/lang/ca-ES.rc
+++ b/dll/win32/shell32/lang/ca-ES.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc
index dafe2216d03..187c0c2c892 100644
--- a/dll/win32/shell32/lang/cs-CZ.rc
+++ b/dll/win32/shell32/lang/cs-CZ.rc
@@ -811,6 +811,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Složku '%1' nebylo možné vytvořit"
     IDS_CREATEFOLDER_CAPTION "Složku nebylo možné vytvořit"
diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc
index 3e6baa9b2ae..6f41e1b47df 100644
--- a/dll/win32/shell32/lang/da-DK.rc
+++ b/dll/win32/shell32/lang/da-DK.rc
@@ -811,6 +811,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc
index f176b284e9b..e9aa547ecff 100644
--- a/dll/win32/shell32/lang/de-DE.rc
+++ b/dll/win32/shell32/lang/de-DE.rc
@@ -806,6 +806,8 @@ BEGIN
     IDS_COPYERRORSAME "'%s' kann nicht kopiert werden: Quell- und Zieldatei
sind identisch."
     IDS_MOVEERRORSUBFOLDER "'%s' kann nicht verschoben werden: Der Zielorder
ist ein Unterordner des Quellordners."
     IDS_COPYERRORSUBFOLDER "'%s' kann nicht kopiert werden: Der Zielorder
ist ein Unterordner des Quellordners."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED " Der Ordner kann nicht erstellt werden
'%1'"
     IDS_CREATEFOLDER_CAPTION " Der Ordner kann nicht erstellt werden."
diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc
index 813d78e3989..3aaa46cf184 100644
--- a/dll/win32/shell32/lang/el-GR.rc
+++ b/dll/win32/shell32/lang/el-GR.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc
index e8400de4545..cc4dad3cbe3 100644
--- a/dll/win32/shell32/lang/en-GB.rc
+++ b/dll/win32/shell32/lang/en-GB.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc
index 5d36961e0cd..757e4ea2bc3 100644
--- a/dll/win32/shell32/lang/en-US.rc
+++ b/dll/win32/shell32/lang/en-US.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc
index 596203601f0..30437706199 100644
--- a/dll/win32/shell32/lang/es-ES.rc
+++ b/dll/win32/shell32/lang/es-ES.rc
@@ -814,6 +814,8 @@ BEGIN
     IDS_COPYERRORSAME "Imposible copiar '%s': El archivo de origen y el de
destino son el mismo."
     IDS_MOVEERRORSUBFOLDER "Imposible mover '%s': La carpeta de destino es
un subdirectorio de la de origen."
     IDS_COPYERRORSUBFOLDER "Imposible copiar '%s': La carpeta de destino es
un subdirectorio de la de origen."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "No se pudo crear la carpeta '%1'"
     IDS_CREATEFOLDER_CAPTION "No se pudo crear la carpeta"
diff --git a/dll/win32/shell32/lang/et-EE.rc b/dll/win32/shell32/lang/et-EE.rc
index e36e88aabc4..d77888fa7bb 100644
--- a/dll/win32/shell32/lang/et-EE.rc
+++ b/dll/win32/shell32/lang/et-EE.rc
@@ -812,6 +812,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Ei saa luua kausta '%1'"
     IDS_CREATEFOLDER_CAPTION "Ei saa kausta luua"
diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc
index c37618c3af9..a20594097ed 100644
--- a/dll/win32/shell32/lang/fi-FI.rc
+++ b/dll/win32/shell32/lang/fi-FI.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc
index 86b1b69717e..fdcb8e66a01 100644
--- a/dll/win32/shell32/lang/fr-FR.rc
+++ b/dll/win32/shell32/lang/fr-FR.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Impossible de copier '%s' : Les noms des fichiers
source et destination sont identiques."
     IDS_MOVEERRORSUBFOLDER "Impossible de déplacer '%s' : Le dossier de
destination est un sous-dossier du dossier source."
     IDS_COPYERRORSUBFOLDER "Impossible de copier '%s' : Le dossier de
destination est un sous-dossier du dossier source."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Impossible de créer le dossier '%1'"
     IDS_CREATEFOLDER_CAPTION "Impossible de créer un dossier"
diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc
index b8e3ce71d08..f086b8abb10 100644
--- a/dll/win32/shell32/lang/he-IL.rc
+++ b/dll/win32/shell32/lang/he-IL.rc
@@ -807,6 +807,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/hi-IN.rc b/dll/win32/shell32/lang/hi-IN.rc
index cb6ad494f48..3096d6999a3 100644
--- a/dll/win32/shell32/lang/hi-IN.rc
+++ b/dll/win32/shell32/lang/hi-IN.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "फ़ोल्डर '%1' बनाने में असमर्थ"
     IDS_CREATEFOLDER_CAPTION "फ़ोल्डर बनाने में असमर्थ"
diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc
index c2ec4d550d6..45febcd796d 100644
--- a/dll/win32/shell32/lang/hu-HU.rc
+++ b/dll/win32/shell32/lang/hu-HU.rc
@@ -804,6 +804,8 @@ BEGIN
     IDS_COPYERRORSAME "'%s' nem másolható: a forrás- és célfájl
ugyanaz."
     IDS_MOVEERRORSUBFOLDER "'%s' nem mozgatható: a célmappa a forrásmappa
egyik almappája."
     IDS_COPYERRORSUBFOLDER "'%s' nem másolható: a célmappa a forrásmappa
egyik almappája."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Nem sikerült a(z) '%1' mappa létrehozása."
     IDS_CREATEFOLDER_CAPTION "Nem sikerült létrehozni a mappát"
diff --git a/dll/win32/shell32/lang/id-ID.rc b/dll/win32/shell32/lang/id-ID.rc
index 4c8e9a72e04..03a6d9a123e 100644
--- a/dll/win32/shell32/lang/id-ID.rc
+++ b/dll/win32/shell32/lang/id-ID.rc
@@ -802,6 +802,8 @@ BEGIN
     IDS_COPYERRORSAME "Tidak bisa menyalin '%s': Nama berkas asal dan tujuan
sama."
     IDS_MOVEERRORSUBFOLDER "Tidak bisa memindahkan '%s': Folder tujuan
merupakan subfolder dari folder asal."
     IDS_COPYERRORSUBFOLDER "Tidak bisa menyalin '%s': Folder tujuan
merupakan subfolder dari folder asal."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Tidak bisa membuat folder folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Tidak bisa membuat folder"
diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc
index 6f1093cd913..615ff750298 100644
--- a/dll/win32/shell32/lang/it-IT.rc
+++ b/dll/win32/shell32/lang/it-IT.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc
index 763f17f4779..ff6eb6994a1 100644
--- a/dll/win32/shell32/lang/ja-JP.rc
+++ b/dll/win32/shell32/lang/ja-JP.rc
@@ -802,6 +802,8 @@ BEGIN
     IDS_COPYERRORSAME "コピーできません '%s': コピー元とコピー先のファイル名が同じです。"
     IDS_MOVEERRORSUBFOLDER "移動できません '%s': 移動先のフォルダは移動元のフォルダのサブフォルダです。"
     IDS_COPYERRORSUBFOLDER "コピーできません '%s':
コピー先のフォルダはコピー元のフォルダのサブフォルダです。"
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "フォルダ '%1' を作成できません"
     IDS_CREATEFOLDER_CAPTION "フォルダを作成できません"
diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc
index 8939d0e7947..8f77796c636 100644
--- a/dll/win32/shell32/lang/ko-KR.rc
+++ b/dll/win32/shell32/lang/ko-KR.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc
index 16cf100515b..d86abbe3566 100644
--- a/dll/win32/shell32/lang/nl-NL.rc
+++ b/dll/win32/shell32/lang/nl-NL.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc
index 086d403e6da..7eaca4b45e9 100644
--- a/dll/win32/shell32/lang/no-NO.rc
+++ b/dll/win32/shell32/lang/no-NO.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc
index 9214d71d909..dec9704c99b 100644
--- a/dll/win32/shell32/lang/pl-PL.rc
+++ b/dll/win32/shell32/lang/pl-PL.rc
@@ -811,6 +811,8 @@ BEGIN
     IDS_COPYERRORSAME "Nie można skopiować  '%s': Nazwy plików źródłowego i
docelowego są takie same."
     IDS_MOVEERRORSUBFOLDER "Nie można przenieść  '%s': Folder docelowy jest
podfolderem folderu źródłowego."
     IDS_COPYERRORSUBFOLDER "Nie można skopiować  '%s': Folder docelowy jest
podfolderem folderu źródłowego."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Nie można utworzyć folderu '%1'"
     IDS_CREATEFOLDER_CAPTION "Nie można utworzyć folderu"
diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc
index 614f1ef8dc0..922a741bb01 100644
--- a/dll/win32/shell32/lang/pt-BR.rc
+++ b/dll/win32/shell32/lang/pt-BR.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc
index 2d58a03cd79..84ce916ffa8 100644
--- a/dll/win32/shell32/lang/pt-PT.rc
+++ b/dll/win32/shell32/lang/pt-PT.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Impossivel copiar '%s': Os nomes dos arquivos de
origem e de destino são os mesmos."
     IDS_MOVEERRORSUBFOLDER "Impossivel mover '%s': A pasta de destino é uma
subpasta da pasta de origem."
     IDS_COPYERRORSUBFOLDER "Impossivel copiar '%s': A pasta de destino é uma
subpasta da pasta de origem."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Impossivel criar pasta '%1'"
     IDS_CREATEFOLDER_CAPTION "Impossivel criar pasta"
diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc
index 1de40d0d214..52262c0e66e 100644
--- a/dll/win32/shell32/lang/ro-RO.rc
+++ b/dll/win32/shell32/lang/ro-RO.rc
@@ -807,6 +807,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Nu poate fi creat un dosar cu numele „%1”"
     IDS_CREATEFOLDER_CAPTION "Nu poate fi creat dosar"
diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc
index 8c8fdcdc7b7..fd4b752c8b8 100644
--- a/dll/win32/shell32/lang/ru-RU.rc
+++ b/dll/win32/shell32/lang/ru-RU.rc
@@ -805,13 +805,15 @@ BEGIN
     IDS_OPENFILELOCATION "Открыть &расположение объекта"
     IDS_SENDTO_MENU "Отправит&ь"
-    IDS_MOVEERRORTITLE "Error Moving File or Folder"
-    IDS_COPYERRORTITLE "Error Copying File or Folder"
+    IDS_MOVEERRORTITLE "Ошибка при перемещении папки или файла"
+    IDS_COPYERRORTITLE "Ошибка при копировании папки или файла"
     IDS_MOVEERRORSAMEFOLDER "Cannot move '%s': The destination folder is the
same as the source folder."
     IDS_MOVEERRORSAME "Cannot move '%s': The source and destination file
names are the same."
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Не удаётся переместить '%s': %s"
+    IDS_COPYERROR "Не удаётся скопировать '%s': %s"
     IDS_CREATEFOLDER_DENIED "Невозможно создать папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Невозможно создать папку"
diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc
index 2bfb217380d..f880a915846 100644
--- a/dll/win32/shell32/lang/sk-SK.rc
+++ b/dll/win32/shell32/lang/sk-SK.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc
index a7f42e94382..d2a99c525e6 100644
--- a/dll/win32/shell32/lang/sl-SI.rc
+++ b/dll/win32/shell32/lang/sl-SI.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc
index 32c275cc326..bb63c6f5f8c 100644
--- a/dll/win32/shell32/lang/sq-AL.rc
+++ b/dll/win32/shell32/lang/sq-AL.rc
@@ -809,6 +809,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc
index 915ef081f52..5fd6a37ceac 100644
--- a/dll/win32/shell32/lang/sv-SE.rc
+++ b/dll/win32/shell32/lang/sv-SE.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Kunde inte skapa mappen '%1'"
     IDS_CREATEFOLDER_CAPTION "Kunde inte skapa mapp"
diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc
index 52d060c06d9..aaaf53eabd4 100644
--- a/dll/win32/shell32/lang/tr-TR.rc
+++ b/dll/win32/shell32/lang/tr-TR.rc
@@ -807,6 +807,8 @@ BEGIN
     IDS_COPYERRORSAME "'%s' kopyalanamıyor: Kaynak ve hedef dosya adları
aynı."
     IDS_MOVEERRORSUBFOLDER "'%s' taşınamıyor: Hedef dizin, kaynak dizinin
bir alt dizinidir."
     IDS_COPYERRORSUBFOLDER "'%s' kopyalanamıyor: Hedef dizin, kaynak dizinin
bir alt dizinidir."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED """%1"" dizini
oluşturulamıyor."
     IDS_CREATEFOLDER_CAPTION "Dizin Oluşturulamıyor"
diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc
index 6a465c79edf..e03599d3be3 100644
--- a/dll/win32/shell32/lang/uk-UA.rc
+++ b/dll/win32/shell32/lang/uk-UA.rc
@@ -805,6 +805,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "Не вдалося створити папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Не вдалося створити папку"
diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc
index cafd0a4dff4..42ae713d7ef 100644
--- a/dll/win32/shell32/lang/zh-CN.rc
+++ b/dll/win32/shell32/lang/zh-CN.rc
@@ -813,6 +813,8 @@ BEGIN
     IDS_COPYERRORSAME "Cannot copy '%s': The source and destination file
names are the same."
     IDS_MOVEERRORSUBFOLDER "Cannot move '%s': The destination folder is a
subfolder of the source folder."
     IDS_COPYERRORSUBFOLDER "Cannot copy '%s': The destination folder is a
subfolder of the source folder."
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "无法创建文件夹 '%1'"
     IDS_CREATEFOLDER_CAPTION "无法创建文件夹"
diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc
index 064076cd7a5..8e1e75b9d01 100644
--- a/dll/win32/shell32/lang/zh-TW.rc
+++ b/dll/win32/shell32/lang/zh-TW.rc
@@ -813,6 +813,8 @@ BEGIN
     IDS_COPYERRORSAME "無法複製「%s」:來源及目的地的檔案名稱相同。"
     IDS_MOVEERRORSUBFOLDER "無法移動「%s」:目的資料夾是來源資料夾的子資料夾。"
     IDS_COPYERRORSUBFOLDER "無法複製「%s」:目的資料夾是來源資料夾的子資料夾。"
+    IDS_MOVEERROR "Cannot move '%s': %s"
+    IDS_COPYERROR "Cannot copy '%s': %s"
     IDS_CREATEFOLDER_DENIED "無法建立資料夾「%1」"
     IDS_CREATEFOLDER_CAPTION "無法建立資料夾"
diff --git a/dll/win32/shell32/shlfileop.cpp b/dll/win32/shell32/shlfileop.cpp
index 8fd4179ba93..59aa0cf2b09 100644
--- a/dll/win32/shell32/shlfileop.cpp
+++ b/dll/win32/shell32/shlfileop.cpp
@@ -663,6 +663,48 @@ EXTERN_C DWORD WINAPI Win32DeleteFileW(LPCWSTR path)
     return (SHNotifyDeleteFileW(NULL, path) == ERROR_SUCCESS);
 }
+#ifdef __REACTOS__
+/************************************************************************
+ * CheckForError          [internal]
+ *
+ * Show message box if operation failed
+ *
+ * PARAMS
+ *  op         [I]   File Operation context
+ *  error      [I]   Error code
+ *  src        [I]   Source file full name
+ *
+ */
+static DWORD CheckForError(FILE_OPERATION *op, DWORD error, LPCWSTR src)
+{
+    CStringW strTitle, strMask, strText;
+    LPWSTR lpMsgBuffer;
+
+    if (error == ERROR_SUCCESS || (op->req->fFlags & (FOF_NOERRORUI |
FOF_SILENT)))
+        goto exit;
+
+    strTitle.LoadStringW(op->req->wFunc == FO_COPY ? IDS_COPYERRORTITLE :
IDS_MOVEERRORTITLE);
+
+    FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                   NULL,
+                   error,
+                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                   (LPWSTR)&lpMsgBuffer,
+                   0,
+                   NULL);
+
+    strText.Format(op->req->wFunc == FO_COPY ? IDS_COPYERROR : IDS_MOVEERROR,
+                   PathFindFileNameW(src),
+                   lpMsgBuffer);
+
+    MessageBoxW(op->req->hwnd, strText, strTitle, MB_ICONERROR);
+    LocalFree(lpMsgBuffer);
+
+exit:
+    return error;
+}
+#endif
+
 /************************************************************************
  * SHNotifyMoveFile          [internal]
  *
@@ -710,7 +752,12 @@ static DWORD SHNotifyMoveFileW(FILE_OPERATION *op, LPCWSTR src,
LPCWSTR dest, BO
         SHChangeNotify(isdir ? SHCNE_RMDIR : SHCNE_DELETE, SHCNF_PATHW, src, NULL);
         return ERROR_SUCCESS;
     }
+
+#ifdef __REACTOS__
+    return CheckForError(op, GetLastError(), src);
+#else
     return GetLastError();
+#endif
 }
 /************************************************************************
@@ -757,7 +804,11 @@ static DWORD SHNotifyCopyFileW(FILE_OPERATION *op, LPCWSTR src,
LPCWSTR dest, BO
         return ERROR_SUCCESS;
     }
+#ifdef __REACTOS__
+    return CheckForError(op, GetLastError(), src);
+#else
     return GetLastError();
+#endif
 }
 /*************************************************************************
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index dcad860d37f..b6bb348d2ba 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -250,6 +250,8 @@
 #define IDS_COPYERRORSAME        348
 #define IDS_MOVEERRORSUBFOLDER   349
 #define IDS_COPYERRORSUBFOLDER   350
+#define IDS_MOVEERROR            351
+#define IDS_COPYERROR            352
 #define IDS_MENU_EMPTY           34561