如何使用不同的用户帐户凭据在服务器上打开文件
本文关键字:服务器 文件 何使用 用户 | 更新日期: 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