将RDP集成到C#应用程序中

5

我目前正在尝试将RDP集成到我的应用程序中。我们需要定期连接许多服务器,但不想要我们的员工知道所有服务器的详细信息。

我目前正尝试使用以下示例:http://www.codeproject.com/KB/cs/RemoteDesktop_CSharpNET.aspx

使用上述示例时,我收到以下错误:

检索 CLSID 为 {791FA017-2DE3-492E-ACC5-53C67A2B94D0} 的组件的 COM 类工厂失败,原因是:80040154 注册表中没有该类 (来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

来自以下代码:

MsRdpClient rdp1;
rdp1 = new MSTSCLib.MsRdpClient();

任何帮助都将不胜感激,谢谢。

你缺少了一个 COM 组件。 - Liam
1
也许你使用的系统与他(XP)不同,自Vista以来RDP已经升级,COM注册也有所不同。如果你直接使用他的二进制文件,它将无法在你的注册表中找到COM注册。你需要使用在你电脑上注册的COM组件。 - Chengxi Li
我发现需要将MsRdpClient添加到工具箱中(工具箱>右键单击>选择项目)。然后,我必须将组件拖到表单上,而不是以编程方式添加。现在它可以正常工作了。感谢大家的努力! - Apparatus
2个回答

1

将您的Visual Studio项目设置为x86构建。

项目属性 -> 构建选项卡 -> 平台目标 -> x86

enter image description here

如果不起作用,尝试通过regsvr32注册com dll。

编译为x86不会提供特定于操作系统的COM注册。 - Nasir
2
但它确实为您提供了访问在x64中不可用的x86 COM组件的权限... - T. Fabre
如果OP使用了“添加引用”对话框,则CLSID必须是正确的。否则,CLSIDs必须与较新的系统版本兼容。 - Daniil

0

正如iamsleepy所评论的那样,根据您的操作系统,您需要不同的COM组件。

您引用的那个是针对XP特定的。请查看以下页面以获取不同操作系统的所有CLSIDs:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383541%28v=vs.85%29.aspx

例如,对于Windows 7,您需要{A9D7038D-B5ED-472E-9C47-94BEA90A5910},如果您通过注册表(HKEY_CLASS_ROOT\CLSID)搜索,它由C:\Windows\System32\mstscax.dll提供。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接