Насколько я знаю, единственный способ - использовать ключ / nostartup на msaccess.exe
Таким образом, вы должны использовать команду оболочки, чтобы получить объект доступа
У меня есть функция, которая открывает базу данных и возвращает объект (это код VBA, который вам нужно будет преобразовать в C #)
Private Function OpenDatabaseWithShell(pDatabaseFullPath As String) As Access.Application
Dim AccObj As Access.Application
On Error GoTo ErrorHandler
Set OpenDatabaseWithShell = Nothing
Dim cmd As String
On Error Resume Next
' basically build full msaccess.exe path and append database name and command switches
cmd = SysCmd(acSysCmdAccessDir) & "MSAccess.exe """ & psDatabaseFullPath & """"
cmd = cmd & " /nostartup /excl"
'start ms access with shell
Shell PathName:=cmd
Do 'Wait for shelled process to finish.
Err = 0
Set AccObj = GetObject(pDatabaseFullPath)
Loop While Err <> 0
On Error GoTo ErrorHandler
'return access object
Set OpenDatabaseWithShell = AccObj
NormalExit:
Exit Function
ErrorHandler:
'error logging here
Exit Function
End Function
EDIT:
Вот ссылка на некоторый код VB.NET, который делает подобное. Прокрутите вниз до «Создание полного примера проекта Visual Basic .NET» и найдите функцию «ShellGetDB»