diff --git a/MantidPlot/src/ApplicationWindow.cpp b/MantidPlot/src/ApplicationWindow.cpp
index c88b63a137133ce7d89a44ad441e944b118c3fa8..f450eb7c16f4bcb5a76280e6675840a37e85d28f 100644
--- a/MantidPlot/src/ApplicationWindow.cpp
+++ b/MantidPlot/src/ApplicationWindow.cpp
@@ -15633,11 +15633,7 @@ void ApplicationWindow::showInterfaceCategoriesDialog() {
 }
 
 void ApplicationWindow::showUserDirectoryDialog() {
-  MantidQt::API::ManageUserDirectories *ad =
-      new MantidQt::API::ManageUserDirectories(this);
-  ad->setAttribute(Qt::WA_DeleteOnClose);
-  ad->show();
-  ad->setFocus();
+  ManageUserDirectories::openManageUserDirectories();
 }
 
 void ApplicationWindow::addCustomAction(QAction *action,
diff --git a/MantidPlot/src/Mantid/FirstTimeSetup.cpp b/MantidPlot/src/Mantid/FirstTimeSetup.cpp
index dbcb8086685833ac0fd3ae2d0638ff2a115a6c5e..97bc1502c172bd4678ab2b88b9ebbc7e3240e434 100644
--- a/MantidPlot/src/Mantid/FirstTimeSetup.cpp
+++ b/MantidPlot/src/Mantid/FirstTimeSetup.cpp
@@ -161,12 +161,7 @@ void FirstTimeSetup::facilitySelected(const QString &facility) {
 }
 
 void FirstTimeSetup::openManageUserDirectories() {
-  MantidQt::API::ManageUserDirectories *ad =
-      new MantidQt::API::ManageUserDirectories(this);
-  ad->setAttribute(Qt::WA_DeleteOnClose);
-  ad->show();
-  ad->setFocus();
-  // cppcheck-suppress memleak
+  MantidQt::API::ManageUserDirectories::openManageUserDirectories();
 }
 
 void FirstTimeSetup::openReleaseNotes() {
diff --git a/docs/source/release/v4.2.0/mantidworkbench.rst b/docs/source/release/v4.2.0/mantidworkbench.rst
index b33ac1b48908ddfa6596576c6eb477ca054f3212..c00c982ead477a1729ef3726020142b55e2611db 100644
--- a/docs/source/release/v4.2.0/mantidworkbench.rst
+++ b/docs/source/release/v4.2.0/mantidworkbench.rst
@@ -30,6 +30,7 @@ Improvements
 - If a spectrum has a label, this will now be used instead of the spectrum number in the legend when the spectrum is plotted.
 - The dialog for selecting spectra to plot now has the spectrum number input field selected by default.
 - There are now icons alongside the colormap names in the plot options dialog.
+- The help button in the Manage User Directories widget has been restored.
 - Hex codes can now be inputted directly into the color selectors in figure options.
 - There is now a button on the plot window's toolbar to generate a script that will re-create the current figure.
 - It is now possible to fit table workspaces in the fit browser and in a script.
diff --git a/qt/applications/workbench/workbench/app/mainwindow.py b/qt/applications/workbench/workbench/app/mainwindow.py
index 86430eaa4438ba3a1ac4817772ec322ec617600c..6e6d54ce3e72858c8010b099dc3eb8dd612ed573 100644
--- a/qt/applications/workbench/workbench/app/mainwindow.py
+++ b/qt/applications/workbench/workbench/app/mainwindow.py
@@ -48,7 +48,7 @@ from qtpy.QtWidgets import (QApplication, QDesktopWidget, QFileDialog,
                             QMainWindow, QSplashScreen)  # noqa
 from mantidqt.algorithminputhistory import AlgorithmInputHistory  # noqa
 from mantidqt.interfacemanager import InterfaceManager  # noqa
-from mantidqt.widgets.manageuserdirectories import ManageUserDirectories  # noqa
+from mantidqt.widgets import manageuserdirectories  # noqa
 from mantidqt.widgets.codeeditor.execution import PythonCodeExecution  # noqa
 from mantidqt.utils.qt import (add_actions, create_action, plugins,
                                widget_updates_disabled)  # noqa
@@ -601,7 +601,7 @@ class MainWindow(QMainWindow):
         self.project.load()
 
     def open_manage_directories(self):
-        ManageUserDirectories(self).exec_()
+        manageuserdirectories.ManageUserDirectories.openManageUserDirectories()
 
     def open_settings_window(self):
         settings = SettingsPresenter(self)
diff --git a/qt/python/mantidqt/_common.sip b/qt/python/mantidqt/_common.sip
index bbbb98df55a47159a6a0f131798114f59fb0b495..77ce48f638c28ab399b146f0f0ad80fd69982fc7 100644
--- a/qt/python/mantidqt/_common.sip
+++ b/qt/python/mantidqt/_common.sip
@@ -384,8 +384,7 @@ class ManageUserDirectories : QDialog {
 %End
 public:
   ManageUserDirectories(QWidget *parent /TransferThis/ = nullptr);
-  static void openUserDirsDialog(QWidget *parent);
-  void setHelpButtonVisible(const bool &visible /TransferThis/ );
+  static void openManageUserDirectories();
 };
 
 // ---------------------------------
diff --git a/qt/python/mantidqt/widgets/manageuserdirectories.py b/qt/python/mantidqt/widgets/manageuserdirectories.py
index 7b967ee654cef9140749dc51a3b04bfe5015fbb3..6105754ecb2d1ec9352474ba5dc916e3642050e4 100644
--- a/qt/python/mantidqt/widgets/manageuserdirectories.py
+++ b/qt/python/mantidqt/widgets/manageuserdirectories.py
@@ -11,19 +11,4 @@ from __future__ import (absolute_import, unicode_literals)
 
 from mantidqt.utils.qt import import_qt
 
-
-ManageUserDirectories_cpp = import_qt('.._common', 'mantidqt.widgets', 'ManageUserDirectories')
-
-
-class ManageUserDirectories(ManageUserDirectories_cpp):
-    """
-    Small wrapper class around the Manage User Directories Window that
-    hides the help button which can lead to a crash.
-    See https://github.com/mantidproject/mantid/issues/26404.
-
-    This is a safe, temporary fix, for release 4.0.1.
-    """
-
-    def __init__(self, parent=None):
-        super(ManageUserDirectories, self).__init__(parent)
-        self.setHelpButtonVisible(False)
+ManageUserDirectories = import_qt('.._common', 'mantidqt.widgets', 'ManageUserDirectories')
diff --git a/qt/python/mantidqtpython/mantidqtpython_def.sip b/qt/python/mantidqtpython/mantidqtpython_def.sip
index 7d39e4b7d9da26af17e7f6a488f3d61c5cf59c83..b72a2267e406ad08dbe39994bc412964a41245aa 100644
--- a/qt/python/mantidqtpython/mantidqtpython_def.sip
+++ b/qt/python/mantidqtpython/mantidqtpython_def.sip
@@ -150,7 +150,6 @@ class ManageUserDirectories : QDialog
 %End
 public:
     ManageUserDirectories();
-    static void openUserDirsDialog(QWidget *parent);
 };
 
 class InterfaceManager
diff --git a/qt/scientific_interfaces/ISISSANS/SANSAddFiles.cpp b/qt/scientific_interfaces/ISISSANS/SANSAddFiles.cpp
index 5f2f7f098a35bd42ac14b97825baeda8e1832cbc..4061ebb70ceb11857746628baaf2e3cf5762f410 100644
--- a/qt/scientific_interfaces/ISISSANS/SANSAddFiles.cpp
+++ b/qt/scientific_interfaces/ISISSANS/SANSAddFiles.cpp
@@ -364,7 +364,7 @@ void SANSAddFiles::runPythonAddFiles() {
  *  output directory to be changed
  */
 void SANSAddFiles::outPathSel() {
-  MantidQt::API::ManageUserDirectories::openUserDirsDialog(this);
+  MantidQt::API::ManageUserDirectories::openManageUserDirectories();
 }
 /** This slot opens a file browser allowing a user select files, which is
  * copied into the new2Add_edit ready to be copied to the listbox (toAdd_List)
diff --git a/qt/scientific_interfaces/ISISSANS/SANSRunWindow.cpp b/qt/scientific_interfaces/ISISSANS/SANSRunWindow.cpp
index ab0385db9ed46fd715b5e7b164a712430df0eae9..073c56e35fe273c7af7c4305a8e506c0690e69fc 100644
--- a/qt/scientific_interfaces/ISISSANS/SANSRunWindow.cpp
+++ b/qt/scientific_interfaces/ISISSANS/SANSRunWindow.cpp
@@ -1974,7 +1974,7 @@ void SANSRunWindow::markError(QLabel *label) {
  * Select the base directory for the data
  */
 void SANSRunWindow::selectDataDir() {
-  MantidQt::API::ManageUserDirectories::openUserDirsDialog(this);
+  MantidQt::API::ManageUserDirectories::openManageUserDirectories();
 }
 
 /**
@@ -3480,9 +3480,8 @@ void SANSRunWindow::checkList() {
   // split up the comma separated list ignoring spaces
   Poco::StringTokenizer in(input, ",", Poco::StringTokenizer::TOK_TRIM);
   try {
-    for (const auto &i :
-         in) { // try a lexical cast, we don't need its result only
-               // if there was an error
+    for (const auto &i : in) { // try a lexical cast, we don't need its result
+                               // only if there was an error
       boost::lexical_cast<double>(i);
     }
     // there were no errors
diff --git a/qt/scientific_interfaces/Indirect/IndirectInterface.cpp b/qt/scientific_interfaces/Indirect/IndirectInterface.cpp
index 37e5fb748f5390cd65f83b552122a1684732f2b2..9f579b52f4a62eac9383b4ad52df9e422d62c777 100644
--- a/qt/scientific_interfaces/Indirect/IndirectInterface.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectInterface.cpp
@@ -49,12 +49,7 @@ IndirectInterface::getInterfaceSettings() const {
 }
 
 void IndirectInterface::manageUserDirectories() {
-  if (!m_manageUserDirectories) {
-    m_manageUserDirectories = std::make_unique<ManageUserDirectories>(this);
-    m_manageUserDirectories->setAttribute(Qt::WA_DeleteOnClose, false);
-  }
-  m_manageUserDirectories->setModal(true);
-  m_manageUserDirectories->show();
+  ManageUserDirectories::openManageUserDirectories();
 }
 
 void IndirectInterface::showMessageBox(QString const &message) {
diff --git a/qt/scientific_interfaces/Indirect/IndirectInterface.h b/qt/scientific_interfaces/Indirect/IndirectInterface.h
index 20c0e337de1f7141cdc75e7af1348f86e9cd06bb..2fe8dc25d07187bdd5cb33562030b22c9d86f0fb 100644
--- a/qt/scientific_interfaces/Indirect/IndirectInterface.h
+++ b/qt/scientific_interfaces/Indirect/IndirectInterface.h
@@ -40,7 +40,6 @@ private:
   virtual void applySettings(std::map<std::string, QVariant> const &settings);
 
   std::unique_ptr<IndirectSettings> m_settings;
-  std::unique_ptr<API::ManageUserDirectories> m_manageUserDirectories;
 };
 
 } // namespace CustomInterfaces
diff --git a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
index 972caf1a7b59f081308f7df4dc7aca528e16929b..93aa84d60526254cdccadac25ea6719a46e732f6 100644
--- a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
+++ b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp
@@ -3215,9 +3215,7 @@ void MuonAnalysis::nowDataAvailable() {
 }
 
 void MuonAnalysis::openDirectoryDialog() {
-  auto ad = new MantidQt::API::ManageUserDirectories(this);
-  ad->show();
-  ad->setFocus();
+  MantidQt::API::ManageUserDirectories::openManageUserDirectories();
 }
 
 /**
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/ManageUserDirectories.h b/qt/widgets/common/inc/MantidQtWidgets/Common/ManageUserDirectories.h
index 96bfe78302ba572bc1024a28aaf4d1b3c6f77c2d..08df76b19ed3a99c417cb46385a6e6e3053653f6 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/ManageUserDirectories.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/ManageUserDirectories.h
@@ -22,8 +22,8 @@ class EXPORT_OPT_MANTIDQT_COMMON ManageUserDirectories
 public:
   ManageUserDirectories(QWidget *parent = nullptr);
   ~ManageUserDirectories() override;
-  static void openUserDirsDialog(QWidget *parent);
-  void setHelpButtonVisible(const bool &visible);
+  static void openManageUserDirectories();
+  void closeEvent(QCloseEvent *event) override;
 
 private:
   virtual void initLayout();
diff --git a/qt/widgets/common/src/ManageUserDirectories.cpp b/qt/widgets/common/src/ManageUserDirectories.cpp
index aa4b869c0864d3d235db76352027dbee0eb5df6a..cc68c2b2002d724cdb3a094f57f5f62bf6bd8e42 100644
--- a/qt/widgets/common/src/ManageUserDirectories.cpp
+++ b/qt/widgets/common/src/ManageUserDirectories.cpp
@@ -14,6 +14,10 @@
 
 using namespace MantidQt::API;
 
+namespace {
+std::unique_ptr<ManageUserDirectories> CURRENTLY_OPEN_MUD;
+}
+
 ManageUserDirectories::ManageUserDirectories(QWidget *parent)
     : MantidDialog(parent) {
   setAttribute(Qt::WA_DeleteOnClose);
@@ -50,10 +54,6 @@ void ManageUserDirectories::initLayout() {
           SLOT(selectSaveDir()));
 }
 
-void ManageUserDirectories::setHelpButtonVisible(const bool &visible) {
-  m_uiForm.pbHelp->setVisible(visible);
-}
-
 void ManageUserDirectories::loadProperties() {
   m_userPropFile =
       QString::fromStdString(
@@ -281,11 +281,17 @@ void ManageUserDirectories::selectSaveDir() {
     m_uiForm.leDefaultSave->setText(path);
   }
 }
-/** Opens a manage directories dialog and gives it focus
- *  @param parent :: the parent window, probably the window that called it
- */
-void ManageUserDirectories::openUserDirsDialog(QWidget *parent) {
-  ManageUserDirectories *ad = new ManageUserDirectories(parent);
-  ad->show();
-  ad->setFocus();
+
+void ManageUserDirectories::openManageUserDirectories() {
+  if (CURRENTLY_OPEN_MUD) {
+    CURRENTLY_OPEN_MUD->raise();
+  } else {
+    CURRENTLY_OPEN_MUD = std::make_unique<ManageUserDirectories>();
+    CURRENTLY_OPEN_MUD->show();
+  }
+}
+
+void ManageUserDirectories::closeEvent(QCloseEvent *event) {
+  CURRENTLY_OPEN_MUD.reset();
+  QWidget::closeEvent(event);
 }
diff --git a/scripts/Interface/ui/sans_isis/run_selector_widget.py b/scripts/Interface/ui/sans_isis/run_selector_widget.py
index cbccaac5aa06b0541a39fc1a7b65ba5192b82b3f..24016cded4085dd1f3bcf09152c2f09161607036 100644
--- a/scripts/Interface/ui/sans_isis/run_selector_widget.py
+++ b/scripts/Interface/ui/sans_isis/run_selector_widget.py
@@ -9,8 +9,8 @@ from __future__ import (absolute_import, division, print_function)
 from qtpy import QtGui, QtWidgets
 from qtpy.QtCore import Signal, QSettings, QFileInfo
 
-from mantidqt.widgets import manageuserdirectories
 from mantidqt.utils.qt import load_ui
+from mantidqt.widgets import manageuserdirectories
 
 Ui_RunSelectorWidget, _ = load_ui(__file__, "run_selector_widget.ui")
 
@@ -58,7 +58,7 @@ class RunSelectorWidget(QtWidgets.QWidget, Ui_RunSelectorWidget):
         return "Files ( *" + " *".join(extensions) + ")"
 
     def show_directories_manager(self):
-        manageuserdirectories.ManageUserDirectories(self).exec_()
+        manageuserdirectories.ManageUserDirectories.openManageUserDirectories()
 
     def run_not_found(self):
         QtWidgets.QMessageBox.warning(self, "Run Not Found!",
diff --git a/scripts/Interface/ui/sans_isis/sans_data_processor_gui.py b/scripts/Interface/ui/sans_isis/sans_data_processor_gui.py
index b257030f30afd8daaeb844b9f51578cb79054e70..3e408ac874bacd1bdf3f59c1e7fe1c0c73f97fd0 100644
--- a/scripts/Interface/ui/sans_isis/sans_data_processor_gui.py
+++ b/scripts/Interface/ui/sans_isis/sans_data_processor_gui.py
@@ -891,7 +891,7 @@ class SANSDataProcessorGui(QMainWindow,
         return str(self.mask_file_input_line_edit.text())
 
     def show_directory_manager(self):
-        manageuserdirectories.ManageUserDirectories(self).exec_()
+        manageuserdirectories.ManageUserDirectories.openManageUserDirectories()
 
     def _on_load_mask_file(self):
         load_file(self.mask_file_input_line_edit, "*.*", self.__generic_settings,
diff --git a/scripts/Muon/GUI/Common/help_widget/help_widget_view.py b/scripts/Muon/GUI/Common/help_widget/help_widget_view.py
index 3c57167060bb65e4897eac3f7c4ca68d80dc72a8..0185b580e52fca904b3454997b78dce2a3550b75 100644
--- a/scripts/Muon/GUI/Common/help_widget/help_widget_view.py
+++ b/scripts/Muon/GUI/Common/help_widget/help_widget_view.py
@@ -8,7 +8,7 @@ from __future__ import (absolute_import, division, print_function)
 from qtpy import QtWidgets
 import Muon.GUI.Common.message_box as message_box
 
-from mantidqt.widgets.manageuserdirectories import ManageUserDirectories
+from mantidqt.widgets import manageuserdirectories
 from mantidqt.interfacemanager import InterfaceManager
 
 
@@ -60,7 +60,7 @@ class HelpWidgetView(QtWidgets.QWidget):
         self.help_button.clicked.connect(slot)
 
     def show_directory_manager(self):
-        ManageUserDirectories.openUserDirsDialog(self)
+        manageuserdirectories.ManageUserDirectories.openManageUserDirectories()
 
     def _on_help_button_clicked(self):
         InterfaceManager().showCustomInterfaceHelp(self.doc)
diff --git a/scripts/Muon/GUI/Common/load_widget/load_view.py b/scripts/Muon/GUI/Common/load_widget/load_view.py
index 2295ea9f81a2982d95f4279e3b21a310d1bd9053..27bd505ca566ad54c4a92f1e7ec71817694bc436 100644
--- a/scripts/Muon/GUI/Common/load_widget/load_view.py
+++ b/scripts/Muon/GUI/Common/load_widget/load_view.py
@@ -8,7 +8,7 @@ from __future__ import absolute_import
 
 from qtpy import QtWidgets, QtCore
 
-from mantidqt.widgets.manageuserdirectories import ManageUserDirectories
+from mantidqt.widgets import manageuserdirectories
 
 
 class LoadView(QtWidgets.QWidget):
@@ -36,7 +36,7 @@ class LoadView(QtWidgets.QWidget):
         self.setLayout(self.grid)
 
     def show_directory_manager(self):
-        ManageUserDirectories.openUserDirsDialog(self)
+        manageuserdirectories.ManageUserDirectories.openManageUserDirectories()
 
     def disable_buttons(self):
         self.spinbox.setEnabled(False)
diff --git a/scripts/test/Muon/help_widget_presenter_test.py b/scripts/test/Muon/help_widget_presenter_test.py
index bd89a0c78d978071969c92416f3c3dce61be633d..2f6d112e656ceb21525b6775bb96a9e8e41a9083 100644
--- a/scripts/test/Muon/help_widget_presenter_test.py
+++ b/scripts/test/Muon/help_widget_presenter_test.py
@@ -8,12 +8,12 @@ import unittest
 
 from mantid.py3compat import mock
 from mantidqt.utils.qt.testing import start_qapplication
+from mantidqt.widgets import manageuserdirectories
 
 from Muon.GUI.Common.help_widget.help_widget_presenter import HelpWidgetPresenter
 from Muon.GUI.Common.help_widget.help_widget_view import HelpWidgetView
 
 
-
 @start_qapplication
 class HelpWidgetPresenterTest(unittest.TestCase):
     def setUp(self):
@@ -25,11 +25,10 @@ class HelpWidgetPresenterTest(unittest.TestCase):
     def tearDown(self):
         self.view = None
 
-    @mock.patch('Muon.GUI.Common.help_widget.help_widget_view.ManageUserDirectories')
-    def test_that_manage_directories_button_clicked_opens_directory_manager(self, ManageUserDirectories_mock):
+    @mock.patch('Muon.GUI.Common.help_widget.help_widget_view.manageuserdirectories.ManageUserDirectories')
+    def test_that_manage_directories_button_clicked_opens_directory_manager(self, mud_mock):
         self.view.manage_user_dir_button.clicked.emit(True)
-
-        ManageUserDirectories_mock.openUserDirsDialog.assert_called_once_with(self.view)
+        self.assertEqual(1, mud_mock.openManageUserDirectories.call_count)
 
 
 if __name__ == '__main__':