https://git.reactos.org/?p=reactos.git;a=commitdiff;h=711f63184915c2e2f125325b774f13ccf781887d
commit 711f63184915c2e2f125325b774f13ccf781887d Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Mon May 11 11:43:07 2020 +0900 Commit: GitHub <nore...@github.com> CommitDate: Mon May 11 11:43:07 2020 +0900 [SHELL32] Don't hardcode C: drive (#2768) CORE-13235 --- dll/win32/shell32/folders/CRecycleBin.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dll/win32/shell32/folders/CRecycleBin.cpp b/dll/win32/shell32/folders/CRecycleBin.cpp index a62696a2628..a32c42b621f 100644 --- a/dll/win32/shell32/folders/CRecycleBin.cpp +++ b/dll/win32/shell32/folders/CRecycleBin.cpp @@ -191,13 +191,17 @@ CRecycleBinEnum::~CRecycleBinEnum() HRESULT WINAPI CRecycleBinEnum::Initialize(DWORD dwFlags) { - static LPCWSTR szDrive = L"C:\\"; + WCHAR szDrive[8]; + if (GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive))) + PathAddBackslashW(szDrive); + else + StringCbCopyW(szDrive, sizeof(szDrive), L"C:\\"); if (dwFlags & SHCONTF_NONFOLDERS) { TRACE("Starting Enumeration\n"); - if (!EnumerateRecycleBinW(szDrive /* FIXME */ , CBEnumRecycleBin, (PVOID)this)) + if (!EnumerateRecycleBinW(szDrive, CBEnumRecycleBin, this)) { WARN("Error: EnumerateCRecycleBinW failed\n"); return E_FAIL; @@ -354,7 +358,7 @@ HRESULT WINAPI CRecycleBinItemContextMenu::QueryContextMenu(HMENU hMenu, UINT in HRESULT WINAPI CRecycleBinItemContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { SEARCH_CONTEXT Context; - static LPCWSTR szDrive = L"C:\\"; + WCHAR szDrive[8]; TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n", this, lpcmi, lpcmi->lpVerb, lpcmi->hwnd); @@ -363,6 +367,11 @@ HRESULT WINAPI CRecycleBinItemContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO l Context.pFileDetails = _ILGetRecycleStruct(apidl); Context.bFound = FALSE; + if (GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive))) + PathAddBackslashW(szDrive); + else + StringCbCopyW(szDrive, sizeof(szDrive), L"C:\\"); + EnumerateRecycleBinW(szDrive, CBSearchRecycleBin, (PVOID)&Context); if (!Context.bFound) return E_FAIL;