我正在开发一个 vsto-word 插件,并将远程图像插入到图片内容控件中的 word 文档中。
一切正常,除了在登录用户连接到远程登录域的机器上。
我没有得到有关该错误的信息。它只是停止执行..图像和一个空的内容控件被插入到word文档中,但是作为两个对象,所以内容控件没有使用它的图像属性。这也是代码停止执行的地方:
public void resultImage(Result r, Dictionary<string, string> wizard)
{
if (this.hasSelection())
{
PictureContentControl picture = getVSTODocument().Controls.AddPictureContentControl(getCCRange(), this.getRandomControlName());
picture.LockContents = false;
toggleActiveCCs(false);
picture.Title = truncateCCTitle(r.title);
picture.Tag = getWizardString(wizard, r.arrange);
try {
Image img = Fetcher.getImage(r.data)
picture.Image = img;
}
catch (Exception e) {
Log.alert(e.Message);
}
afterInsert(picture.Range);
}
}
现在,我使用一个临时文件来存储图像,因为我想知道非管理员用户是否可能没有对内存的写权限......我也在使用一个临时文件(带有 html)来插入一个表,其中工作正常,也作为受限域访问用户......所以我想这也适用于图像!?
我尝试了很多东西,包括:
- 使用 StreamReaders 和 Memory 流制作图像
- Locked ContentControls 有类似的行为,只是停止工作,所以我确保它们都已解锁
- 传输经过 base64 编码的图像,也带有内存流......但这里也一样......
我也在MSDN上问过这个问题
更新 X: 我确定了错误,即 hresult 0x80004005 (E_FAIL: Unspecified failure) 并没有多大帮助……该死。
堆栈跟踪:
Microsoft.Office.Tools.Word.PictureContentControlImpl 的 Microsoft.Office.Interop.Word.InlineShapes.AddPicture(String FileName, Object& LinkToFile, Object& SaveWithDocument, Object& Range) 在 Microsoft.Office.Tools.Word.PictureContentControlImpl XXX.ThisAddIn.resultImage 处的 .set_Image(图像值)(结果 r,Dictionary`2 向导)
这绝对是权限问题,如何检查/设置正确的权限.. ?!!