您的位置:首页 > 电脑网络 > 电脑配件 > Failed due to the following error: 80070005.

Failed due to the following error: 80070005.

luyued 发布于 2011-04-18 22:09   浏览 N 次  


今天直接引用了 IE 的 COM 组件和 .Net 的 mshtml 组件做了一个 Web 自动运行的页面, 具体效果是驱动 IE 浏览器打开新窗口然后自动进行博客的发布, 个人资料的修改以及列表项的增添等等的操作.
在本地调试的时候完全可以运行,然而正式发布到远程服务器上时[将 Interop.SHDocVw.dll 和 Microsoft.mshtml.dll 同时部署上去]却总是出现错误[参见 http://lieb.cn/letmego ]: Retrieving the COM class factory for component with CLSID {0002DF01-0000-0000-C000-000000000046} failed due to the following error: 80070005. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败, 原因是出现以下错误: 80070005.
百度了一下 80070005 error, 原来是对于用户来说,对服务器上的文件的操作权限不够所引起的错误, 要配置DCOM.
由于服务器不是我的, 我仅仅买了人家的一个虚拟空间而已, 因此是没有太多操作权限的. 本来这种效果可以让大家能生动的在自己的计算机上看到实时的共享空间操作过程, 现在只能向初级用户表示遗憾了.
Try/Catch以及sleeping 的代码都省去, 不重构, 主要代码为:
1. 添加对IE组件和mshtml组件的引用
2. using mshtml;
3.

string loginURL = "http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=10&ct=1180058889&rver=4.0.1532.0&wp=MBI&wreply=http:%2F%2Fspaces.live.com%2F&lc=1033&id=73625&mkt=zh-cn";
object nullArg = null;
SHDocVw.InternetExplorer myIe = new SHDocVw.InternetExplorer();
myIe.Visible = true;
myIe.Navigate(loginUrl, ref nullArg, ref nullArg, ref nullArg, ref nullArg);
mshtml.IHTMLDocument2 myDom = (mshtml.IHTMLDocument2)myIe.Document;
mshtml.IHTMLElement lkOther = (mshtml.IHTMLElement)myDom.all.item("i1668", 0);
lkOther.click();
mshtml.IHTMLInputTextElement tbUserMail = (mshtml.IHTMLInputTextElement)myDom.all.item("i0116", null);
tbUserMail.value = myLMail;
mshtml.IHTMLInputTextElement tbUserPas = (mshtml.IHTMLInputTextElement)myDom.all.item("i0118", null);
tbUserPas.value = myLPass;
mshtml.IHTMLElement lkSignIn = (mshtml.IHTMLElement)myDom.all.item("idSIButton9", 0);
lkSignIn.click();
----
直接使用 Powershell 更简单, 虽然都要用到 COM 和 DOM ...

图文资讯
广告赞助商