I just checked two Win7 systems and the Personal (i.e. "Documents" or back to "My Documents" again in Win7, go figure) folder is not hidden. Perhaps the one you looked at had been infected at some point? That's a common reason for this issue.

The real question is why you'd put .MDB files in there at all???

That location is for the user's working documents, i.e. things they need to mess around with directly. Normally a program's database would go under either LocalAppdata or CommonAppdata, which are meant as program workspaces.


Your program should never try to find any of these locations by name. That's why Shell32.dll supports two APIs for looking up this info. One easy way to get this info is via the COM API:
  • Set a reference to Microsoft Shell Controls And Automation
  • Look up the paths by Special Folder value, using late binding to avoid a binary compatibility glitch in some versins of Windows

Code:
    Dim strPath As String
    
    With CreateObject("Shell.Application").NameSpace(ssfPERSONAL).Self
        strPath = .Path
    End With
or:
Code:
    Dim strDocs As String
    Dim strLocalAD As String
    
    With CreateObject("Shell.Application")
        strDocs = .NameSpace(ssfPERSONAL).Self.Path
        strLocalAD = .NameSpace(ssfLOCALAPPDATA).Self.Path
    End With
etc.

The Shell Special Folder constants are documented in your VB6 copy of the MSDN Library (i.e. the online help). You could also go the bulkier route and use Shell32.dll's non-COM API (i.e. a few bulky Declares and wrapper code).

But you never want to dump files under LocalAppdata, ComonAppdata, etc. Instead you should be putting them into a unique subfolder, usually based on items such as App.CompanyName and App.Title.

If using CommonAppdata you also need to set security on your subfolder to permit your users to write there. This is why such a folder should be created during program installation, since the installer should already be running elevated anyway.

But I think I'm repeating myself.