As far as I know the only way is to use the /nostartup switch on msaccess.exe
So you have to use shell command to get the access object
I have a function that opens a database and returns the object (This is VBA code which you will have to convert to 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:
Here's a link to some VB.NET code that does a similar thing. Scroll down to "Create the Complete Sample Visual Basic .NET Project" and look for the "ShellGetDB" function