<!-- Describe the issue -->
When accessing the Open Wallet from the File Menu, the UI hangs. Looking at the debug.log in the data directory, there are thousands of ListWalletDir: ACcess is Denied E:\$Recycle.bin\s-1-5-18 events. 

The data directory is set to be the root of a USB drive mapped to the E: letter. 

Client is started as std user. 

**Expected behavior**


Expected behaviour is for the client UI to handle the access issue and continue, possibly noting the requirement to have further permissions. Even when the client is started as administrator, the same hang occurs. It appears the client data directory should be set to a folder and not the root of a drive. 

**Actual behavior**

Any attempt to access the open wallet menu gets stuck. 

**To reproduce**

Install bitcoin core 0.21.0 x64
Set data directory to the root of a drive in Windows
Let sync or not, hover over the Open Wallet menu
Program UI hangs

**System information**

<!-- What version of Bitcoin Core are you using, where did you get it (website, self-compiled, etc)? -->
bitcoin core 0.21.0 x64

<!-- What type of machine are you observing the error on (OS/CPU and disk type)? -->
Windows 10 x64 PC, SSD drive, Core i9 9980xe

<!-- GUI-related issue? What is your operating system and its version? If Linux, what is your desktop environment and graphical shell? -->
Windows 10 20H2 Build 19042.789

<!-- Any extra information that might be useful in the debugging process. -->
<!--- This is normally the contents of a `debug.log` or `config.log` file. Raw text or a link to a pastebin type site are preferred. -->

thousands of lines of the below. The debug.log is 370MB. 

05:32:18Z ListWalletDir: Access is denied E:\System Volume Information
2021-02-10T05:32:18Z ListWalletDir: Access is denied E:\System Volume Information
2021-02-10T05:32:18Z ListWalletDir: Access is denied E:\System Volume Information
{
    return path / "wallet.dat";
}
bool IsBDBFile(const fs::path& path)
{
    if (!fs::exists(path)) return false;
    
    
    boost::system::error_code ec;
    auto size = fs::file_size(path, ec);
    if (ec) LogPrintf("%s: %s %s\n", __func__, ec.message(), path.string());
    if (size < 4096) return false;
    fsbridge::ifstream file(path, std::ios::binary);
    if (!file.is_open()) return false;
    file.seekg(12, std::ios::beg); 
    uint32_t data = 0;
    file.read((char*) &data, sizeof(data)); 
    
    
    
    
    return data == 0x00053162 || data == 0x62310500;
}
bool IsSQLiteFile(const fs::path& path)