2014-04-18 29 views
1

我目前正在开发中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#的问题是,我怎么能打开并显示一个文件(在它相关的应用程序),当文件被保存,只能使用不同的用户凭据访问的服务器上?

+0

它似乎喜欢这很难做到,因为你不应该这样做。 –

回答

0

我认为这应该工作

步骤1中找到应用与扩展 步骤2.使用提到 System.Diagnostics.Process.Start(“应用程序从目前的机器相同的API注册了在第1步中找到“, @”\ MyServer \ MyFolder \ MySubFolder \ MyFile.docx“, ”MyUsername“, password, ”MyDomain“);

查看如何找到寄存器应用延期以下链接

How to get recommended programs associated with file extension in C#

http://www.codeproject.com/Articles/17023/System-File-Association

相关问题