使用WPF应用程序(C# 4.0)。
系统在SharePoint中存储了许多Word文档。Word可以直接编辑这些文档,因为SharePoint通过WebDAV向Office公开文档库。
为了启动Word来编辑这些文档,我们的WPF应用程序使用Microsoft.Office.Interop.Word。
我发现(通过简单的尝试),使用Interop.Word打开本地文档与通过WebDAV从SharePoint打开文档之间的唯一区别是,您传递的引用对象FileName是URL而不是本地路径字符串。
这一切都很好用:
var wordApplication =
new Microsoft.Office.Interop.Word.Application { Visible = true };
object filePath =
"http://PathToSharepoint.com/DocumentLibrary/DocumentName.doc";
object missing = Missing.Value;
object readOnly = false;
object isVisible = true;
Document reportDoc = wordApplication.Documents.Open(
ref filePath,
ref missing,
readOnly,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref isVisible);
reportDoc.Activate();但是,如果运行应用程序的Windows用户不是有权访问文档库的域用户,Word在最好的情况下会提示他们输入用户名和密码,而在最坏的情况下,有时只会抛出一个COMException。
用户已经使用他们需要提供的相同凭据登录到我们的WPF应用程序,并且我们在内存中有用户名和securePassword。但是,我看不到任何明显的方法来向Word提供这些凭据。
谁知道我怎么才能提供类似于NetworkCredential的东西呢?
发布于 2011-03-04 03:33:43
您是否尝试执行被模拟为您拥有其用户名和密码的用户的代码?在网络上有很多这样做的例子,比如http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx。我现在不能亲自测试它,但它应该可以工作...
https://stackoverflow.com/questions/5175395
复制相似问题