如何使用不同的用户帐户凭据在服务器上打开文件

本文关键字:服务器 文件 何使用 用户 | 更新日期: 2023-09-27 17:58:52

我目前正在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#问题是,当文件存储在只能使用不同用户凭据访问的服务器上时,我如何打开和显示文件(在其关联的应用程序中)?

如何使用不同的用户帐户凭据在服务器上打开文件

我认为这应该能在中工作

步骤1。查找在扩展中注册的应用程序步骤2。使用前面提到的ApiSystem.Diagnostics.Process.Start("在步骤1中找到的当前机器的应用程序",@"''MyServer''MyFolder''MySubFolder''MyFile.docx","我的用户名",暗语"MyDomain");

请参阅以下链接,了解如何找到扩展的注册应用程序

如何在C#中获得与文件扩展名关联的推荐程序

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