我目前正在VS2012(.NET 4.0)中开发一个C#WinForms应用程序。该应用程序有点像电子邮件客户端,并显示一个消息列表。每条消息都可以附加一个或一个文件。 文件附件存储在不同的服务器上,只能使用其他用户帐户(而不是登录用户)访问。
当用户双击文件附件时,我需要打开文件并将其显示在关联的应用程序中。即记事本中的TXT文件,Word中的DOCX文件等
我希望我可以将完整的文件名传递给System.Diagnostics.Process.Start
方法,并使用正确的用户名,密码和域值,它会打开相关应用程序中的文件。
例如
SecureString password = new SecureString();
"MyPassword".ToCharArray().ToList().ForEach(password.AppendChar);
System.Diagnostics.Process.Start(@"\\MyServer\MyFolder\MySubFolder\MyFile.docx",
"MyUsername",
password,
"MyDomain");
但是消息引发异常: 指定的可执行文件不是此OS平台的有效应用程序。
我还尝试创建ProcessStartInfo
对象实例,并将FileName
属性设置为"Explorer.exe"
,将Arguments
属性设置为@"\\MyServer\MyFolder\MySubFolder\MyFile.docx"
,然后传递给它作为System.Diagnostics.Process.Start
方法的参数。但这也不起作用。不会抛出异常,也不会显示文件。
但是如果你查看System.Diagnostics.Process.Start
方法返回的对象,你会发现InvalidOperationException
已经发生。
我的C#问题是,当文件存储在只能使用不同用户凭据访问的服务器上时,如何打开并显示文件(在其关联的应用程序中)?
答案 0 :(得分:0)
我认为这应该有用
步骤1.找到使用扩展程序注册的应用程序 步骤2.使用与上述相同的Api System.Diagnostics.Process.Start("来自当前计算机的应用程序,在步骤1和#34中找到;, @" \ MyServer的\ MyFolder文件\ MySubFolder \ MyFile.docx&#34 ;, "名为myUsername&#34 ;, 密码, " MYDOMAIN&#34);
请参阅以下链接,了解如何查找扩展程序的注册应用程序
How to get recommended programs associated with file extension in C#
http://www.codeproject.com/Articles/17023/System-File-Association