【发布时间】:2014-06-03 02:01:51
【问题描述】:
我目前正在 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");
但是会抛出异常并显示以下消息: 指定的可执行文件不是此操作系统平台的有效应用程序。
我还尝试创建一个ProcessStartInfo 对象实例并将FileName 属性设置为"Explorer.exe",将Arguments 属性设置为@"\\MyServer\MyFolder\MySubFolder\MyFile.docx",并将其作为参数传递给System.Diagnostics.Process.Start 方法。但这也不起作用。不抛出异常,也不显示文件。
但是,如果您查看 System.Diagnostics.Process.Start 方法返回的对象,您会发现 InvalidOperationException 已经发生。
我的 C# 问题是,当文件存储在只能使用不同用户凭据访问的服务器上时,如何打开和显示文件(在其关联的应用程序中)?
【问题讨论】:
-
这似乎很难做到,因为你不应该这样做。
标签: c# .net security .net-4.0 filesystems