C# process.Start 文件名和传递参数
Posted
技术标签:
【中文标题】C# process.Start 文件名和传递参数【英文标题】:C# process.Start filename and passing arguments 【发布时间】:2017-03-10 16:53:08 【问题描述】:我需要打开文件 test.mdb。 路径必须是从相对于 C# 程序 exe 所在的任何目录构建的完整路径
我需要传递参数行,该行将像这样 /cmd "MyArgument" 批量传递 要使 /cmd 开关起作用,路径必须包含已安装的 MSACCESS.EXE 的完整路径
我只是不知道如何将完整路径传递给 MSACCESS>EXE,然后是 test.mdb 的完整路径,然后是参数。
为了帮助我,我发布了以下批处理字符串,但我需要 C#
"C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "C:\Documents and Settings\User\Test 示例文件夹\test.mdb" /cmd "MyArgument"
明确两个重点:
test.mdb 完整路径必须由启动的 C# exe 自动确定,它将是 C# exe 路径,但带有 test.mdb。
如果 C# exe 程序可以自动检查哪个版本(即 Office 10、Office 12 等)并使用它,那么 MSACCESS>EXE 路径必须是安装的 MSACCESS.EXE 版本的完整路径。
这是我目前的代码:
var filePath = @"test.mdb";
Process process = new Process();
process.StartInfo.FileName = filePath;
process.StartInfo.Arguments = "/cmd " + "\"MyArgument\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
【问题讨论】:
db 文件的路径将是您的参数之一。 获取 test.mdb 完整路径很简单:将var filePath = @"test.mdb";
更改为 string filePath = new System.IO.FileInfo("test.mdb").FullName;
juharr & Mvarta 我试过了,但它不起作用你能发布解决我帖子中所有要点的工作代码示例,包括任何使用引用等,以便代码编译我是 C# 新手和无法让它工作,所以解决我所有观点的代码的工作示例对我有好处谢谢
【参考方案1】:
我认为您无需担心检测 Office 版本,这应该适合您:
string filepath = '"' + Directory.GetCurrentDirectory() + "\\test.mdb" + '"';
string acc_cmd_arg = "HELLO";
using (System.Diagnostics.Process process = new System.Diagnostics.Process() )
process.StartInfo.FileName = "msaccess.exe";
process.StartInfo.Arguments = filepath + " /cmd " + acc_cmd_arg;
process.Start();
【讨论】:
以上是关于C# process.Start 文件名和传递参数的主要内容,如果未能解决你的问题,请参考以下文章
C# Process Start 需要带双引号的参数 - 它们消失了
C# Process.Start with credentials 失败,拒绝访问