C#Process.开始打开应用程序,但不打开文件
我有一个IE插件,它在有pdf链接的页面中添加按钮,并在单击时在特定应用程序中打开它们 假设我需要在abc.exe应用程序中打开一个xyz.pdf文件。abc不是文件类型.pdf的默认应用程序 在一台机器中,以下各项工作正常C#Process.开始打开应用程序,但不打开文件,c#,C#,我有一个IE插件,它在有pdf链接的页面中添加按钮,并在单击时在特定应用程序中打开它们 假设我需要在abc.exe应用程序中打开一个xyz.pdf文件。abc不是文件类型.pdf的默认应用程序 在一台机器中,以下各项工作正常 processp=Process.Start(“pathtoabc.exe”、“pathtoxyz.pdf”) 在另一台机器上,只有我将abc.exe作为默认应用程序,然后使用下面的 processp=Process.Start(“pathtoxyz.pdf”) 你能给我一
processp=Process.Start(“pathtoabc.exe”、“pathtoxyz.pdf”)代码>
在另一台机器上,只有我将abc.exe作为默认应用程序,然后使用下面的
processp=Process.Start(“pathtoxyz.pdf”)代码>
你能给我一些指点吗?我还尝试使用ProcessStartInfo
,没有任何更改
更新:
我尝试使用默认的Acrobat阅读器,并带有一个参数
processstartinfo的参数类似于“C:\PDF文件\Professional Letters Guide.PDF”
FileName=“C:\ProgramFiles(x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe”
结果-Acrobat reader打开,但出现错误消息“未找到文件”。但是,路径中有可用的
已解决:
这是Foldername中的一个空格。。通过用引号“\”括起文件名解决了此问题
谢谢大家的建议。他们帮我考虑清楚了。进程的第二个参数。Start
被传递给您试图启动的应用程序,并且它不会使用此应用程序“pathtoabc.exe”打开文件,除非应用程序“pathtoabc.exe”接受文件名作为启动参数
因此,您需要检查您尝试使用的应用程序是否支持此类参数。您是否尝试用引号和文件的完整路径限定Process.StartInfo.Arguments值?WorkingDirectory属性如何?另外,前面关于确认称为supporting c的应用程序的断言ommand行参数是绝对有效的。您可能会被愚弄到认为是由于特定于计算机的操作系统文件扩展名关联造成的。您是否读取了任何错误消息?没有错误消息..在try-catch中不会失败。没有错误消息..在try-catch中不会被捕获..p.WaitForExit();if(p.ExitCode!=0){string exception=p.StandardError.ReadToEnd();}谢谢..我将检查此项以读取开始信息中的异常您需要添加这些属性太UseShellExecute=false,RedirectStandardError=true,它说它在一台机器上工作,因此如果这是同一个应用程序,它应该工作。但是问题在细节上是模糊的。可能它已经是默认应用程序了在第一台计算机上。在第一台计算机上,应用程序未设置为默认值,但代码仍能在特定的应用程序中打开该文件。当我在两台计算机上使用bin中的DLL时,它实际上起了作用。当我创建安装项目并使用msi安装时,它停止打开该文件。@Sathya open up命令行和check?path/to/abc.exe path/to/file.pdf
如果启动正确,则您可以,但如果启动不正确,则您必须检查如何使用作为命令行发布的文件启动此应用程序argument@m.rogalski谢谢。我应该在发布之前检查这个。不是在机器中。我会检查并更新