diff --git a/CHANGELOG.md b/CHANGELOG.md index eaea11a7..e9e672b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - fixed issue with highlighting not being able to be turned off in the Sbie Messages tab [#3338](https://github.com/sandboxie-plus/Sandboxie/issues/3338) - fixed issue with programs installed in the sandbox not being displayed via Run from Start Menu [#3334](https://github.com/sandboxie-plus/Sandboxie/issues/3334) - fixed issue with NtQueryDirectoryObject [#3310](https://github.com/sandboxie-plus/Sandboxie/issues/3310) +- fixed Some GUI functions use the wrong box path if the FileRootPath value starts with Volume{GUID} [#3345](https://github.com/sandboxie-plus/Sandboxie/issues/3345) diff --git a/SandboxiePlus/QSbieAPI/SbieAPI.cpp b/SandboxiePlus/QSbieAPI/SbieAPI.cpp index d4e25e17..3b403fb9 100644 --- a/SandboxiePlus/QSbieAPI/SbieAPI.cpp +++ b/SandboxiePlus/QSbieAPI/SbieAPI.cpp @@ -939,11 +939,18 @@ void CSbieAPI::UpdateDriveLetters() QString CSbieAPI::Nt2DosPath(QString NtPath, bool* pOk) const { - QReadLocker Lock(&m_DriveLettersMutex); + if (NtPath.left(11) == "\\??\\Volume{") { + wchar_t DeviceName [MAX_PATH]; + std::wstring VolumeName = NtPath.mid(4, 44).toStdWString(); + if (QueryDosDeviceW(VolumeName.c_str(), DeviceName, ARRAYSIZE(DeviceName))) + NtPath.replace(0, 48, QString::fromWCharArray(DeviceName)); + } if (NtPath.indexOf("\\device\\mup", 0, Qt::CaseInsensitive) == 0) NtPath = "\\Device\\LanmanRedirector" + NtPath.mid(11); + QReadLocker Lock(&m_DriveLettersMutex); + for (QMap::const_iterator I = m_DriveLetters.begin(); I != m_DriveLetters.end(); ++I) { const SDrive& Drive = I.value();