If you put the database anywhere under "Program Files" or "Program Files (x86)", you will NOT be able to use the database. These folder locations are ReadOnly to normal users, and hence you will not be able to update the database.
You can keep an original copy of the database (preferably in a state that defines the entire database but does not have data in it), then copy that file to a more appropriate place where the user has read/write permissions, like in a folder under %PROGRAMDATA% or a folder under %APPDATA% (the users roaming profile) or %LOCALAPPDATA% (the users local profile).
Which folder you pick depends on your application. Will all users on the same machine use the same database? If so, use a folder under %PROGRAMDATA%. If the data is going to be unique to each user on the same machine but does not follow the user around from machine to machine, use a folder under %LOCALAPPDATA%. If the data has to follow each user around to every machine they use, then %APPDATA% would be more appropriate. If using roaming profiles, you would need to have each machine in an Active Directory environment and network locations setup as appropriate for romain profiles and data.
In most cases, you would use a folder under %PROGRAMDATA%.
When building the connection string to the database, you could just use string manipulation to insert the path to the database file:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%PROGRAMDATA%\myAppFolder\myAccessFile.accdb;Persist Security Info=False;