使用C# Process.Start()启动MS Access打开指定数据库报错求助
解决.NET Core 6启动Access打开指定数据库的命令行错误
问题原因
你的数据库所在路径包含空格(DB Application文件夹),直接作为参数传入时,Access会将空格识别为参数分隔符,引发两个问题:
- 空格后的
Application被判定为无效命令行选项,触发第一个错误提示 - 路径被截断为
C:\Users\myname\AppData\Local\DB,Access自动补充默认的.mdb后缀,导致找不到正确的.accdb文件
修正方法
给包含空格的数据库完整路径添加双引号,确保Access将整个路径识别为单个有效参数。修正后的代码如下:
string appPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); appPath = Path.Combine(appPath, "DB Application"); string fullDbPath = Path.Combine(appPath, "DB.accdb"); Process process = new Process(); process.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.exe"; // 给路径包裹双引号,处理空格导致的参数拆分问题 process.StartInfo.Arguments = $"\"{fullDbPath}\""; process.Start();
额外优化建议
- 始终使用
Path.Combine拼接路径,避免手动拼接斜杠时出现格式错误 - 可以通过读取注册表或Office安装检测逻辑动态获取
MSACCESS.exe的路径,避免硬编码路径带来的版本兼容性问题(不同Office版本的安装路径可能不同)
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

