如何以其他用户身份打开文档?
文档类型未知(可能是pdf,.xls,.doc,图像等)。 文档在网络共享,用户名,域和密码都是已知的。
我已经彻底研究了这个问题,我不相信这个问题已在这里得到解答。请证明我错了。
这个问题越来越近了 Open a shared file under another user and domain?
但不幸的是,它将文件打开到文件流,我需要在其关联的应用程序中打开该文件。
答案 0 :(得分:1)
查看Runas
runas /user:somedomain\someuser "cmd /c start c:\somedocument.pdf"
位于C:\Windows\System32\runas.exe
要从C#应用程序打开它,您可以使用Process.Start
和相应的标记。
修改强>
好吧,您可以完全跳过Runas
的使用,因为Process.Start
可以执行相同的工作,并且仍允许您根据需要指定密码(内部硬编码,或通过UI)。
只需使用cmd.exe /c start <pathToFile>
通过shell启动文件及相关程序:
string cmdPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.System),
"cmd.exe");
string workingDirectory = @"C:\users\public";
string pathToFile = Path.Combine(workingDirectory, "somefile.png");
string arguments = string.Format("/c start {0}", pathToFile);
var password = new SecureString();
foreach (char c in "usersPassword")
password.AppendChar(c);
var processStartInfo = new ProcessStartInfo()
{
FileName = cmdPath,
Arguments = arguments,
WorkingDirectory = workingDirectory,
UserName = "TestUser",
Domain = Environment.MachineName, // Could use domain
Password = password,
UseShellExecute = false,
};
Process.Start(processStartInfo);
答案 1 :(得分:1)
您是否考虑过在本地复制文件并将其作为当前用户打开?
推理:
*桌面用于Win32意义上。
答案 2 :(得分:1)
您可以使用具有完全权限的服务器端Web服务,您可以尝试调用该Web服务以检查是否允许传递的用户编辑文档,如果是,则webservice可以检索该文档并将其发送。
这样你就可以在中间放置权限层/层,而不必在你的客户端应用上处理它。客户端应用程序只需发送用户名和webservice处理其余的