我需要您对以下C#代码的建议:
EgarDDSEnt.IIVDDSEnt dds = null; // This line executes fine.
dds = new IVDDSEnt(); // This line fails with an exception ...
dds.Connect("username", "password"); // ... which makes this line fail too.
以下是症状:
Windows Server 2008 R1:
Windows 7:
IVDDSEnt()类是安装“ivolatility SDK”时安装的COM对象。
更新
更新
添加了try / catch和“e.GetBaseException”(定义为“返回异常,这是一个或多个后续异常的根本原因”):
System.Runtime.InteropServices.COMException (0x80080005): Retrieving
the COM class factory for component with CLSID
{FA944FE7-AEB8-4B5B-8315-11D19B1F6264} failed due to the following error:
80080005 Server execution failed (Exception from HRESULT:
0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
at PhiDataOnSchedule.ConsoleApplication.MyMain(Boolean dummyRun)
更新
仍然无法解决问题 - 最简单的方法可能是从Windows Server 2008 R1升级到Windows Server 2008 R2(如果它适用于Win7,而Windows Server 2008 R2有Win7核心,也许它会以某种方式解决潜在问题?)。
答案 0 :(得分:4)
这可能是权利问题。检查服务运行的服务帐户及其权限。然后更改服务帐户或扩展其权限。
答案 1 :(得分:1)
CO_E_SERVER_EXEC_FAILURE
是“服务器执行失败”。
这表明组件应该处于进程外,但COM运行时无法启动可执行文件(或者,可能会将dll加载到主机进程中)。
查找包含Process Monitor组件的文件的活动可能会给你一个线索(可能是权限:Process Monitor可以确认这一点)。
答案 2 :(得分:0)
也许我必须指定一个帐户来运行服务?
有关如何编写代码的完整示例,请参阅:
http://www.codeproject.com/KB/WPF/LtoE.aspx?artkw=LINQ%20to%20WCF#ShowIt
搜索文本:“运行安装程序后,将允许您使用以下对话框输入要在其下运行的服务登录凭据”: