【问题标题】:How do you open a file on a server using different user account credentials如何使用不同的用户帐户凭据打开服务器上的文件
【发布时间】: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


【解决方案1】:

我认为这应该可行

步骤 1. 找到注册了扩展的 App 步骤 2. 使用提到的相同 Api System.Diagnostics.Process.Start("步骤 1 中找到的当前机器中的应用程序", @"\MyServer\MyFolder\MySubFolder\MyFile.docx", "我的用户名", 密码, "我的域");

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

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

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

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2018-11-11
    • 2023-01-31
    • 2019-10-27
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    相关资源
    最近更新 更多