C# 以其他用户身份在网络上打开文件

C# 以其他用户身份在网络上打开文件,c#,C#,我正在编写一个.NET windows应用程序,我想在其中运行explorer.exe以打开一个文件。基本上,我有一个程序,它向用户显示网格中的文件,该网格位于他们无权访问的网络文件夹中。因此,基本上我希望他们能够查看某些文件,如Docx、PDF、JPG等。当他们单击网格中的文件时,我希望它为所选文件的扩展启动相应的应用程序。当我自己使用它时,它正在使用: Process.Start("explorer.exe", @"\\myserver\folder\test.pdf"); 但是,这些文件

我正在编写一个.NET windows应用程序,我想在其中运行explorer.exe以打开一个文件。基本上,我有一个程序,它向用户显示网格中的文件,该网格位于他们无权访问的网络文件夹中。因此,基本上我希望他们能够查看某些文件,如Docx、PDF、JPG等。当他们单击网格中的文件时,我希望它为所选文件的扩展启动相应的应用程序。当我自己使用它时,它正在使用:

Process.Start("explorer.exe", @"\\myserver\folder\test.pdf");
但是,这些文件位于实际用户无权访问的位置。我尝试用以下内容来包装它:

using (new Impersonator("username", "domain", "password"))
{

}
但我有一个错误:

System.dll中发生类型为“System.ComponentModel.Win32Exception”的未处理异常

其他信息:未知错误0xFFFFFE

我甚至尝试使用ProcessStartInfo并在那里设置用户名、密码和域,但一直得到:

目录名无效


那么,关于如何启动文件(如Docx、PDF、JPG等)并向其提供有权访问网络上该文件夹的用户的凭据,您有什么想法吗?

模拟器类来自何处?您可以将文件复制到本地临时文件夹并正常打开它吗?不支持以其他用户身份运行资源管理器-请参阅。我建议不要这样做,因为即使你让它工作起来,如果打开多个资源管理器窗口,也会非常混乱,无法区分哪个是作为原始用户运行的,哪个是作为备用用户运行的。@DStanley我只是在谷歌上搜索了一下,发现:代码看起来很像官方的Microsoft方法: