不能引用早先曾一个DLL(Can not reference a Dll that worked e

2019-10-19 03:39发布

我试图programmaticly更改终端服务设置。 我了解到,您必须使用tsuserex.dll 。 是C#我跑tsuserex通过TLBIMP创造TSUSEREXLib.dll然后regasm注册它。 我得到它的工作,并写了一个框架计划用它作为概念的教授。 不过今天过后我做了一些改变,当我运行我的程序出现错误

无法投射型“系统.__ ComObject”的COM对象为接口类型“TSUSEREXLib.IADsTSUserEx”。 此操作失败的原因是对IID由于未能以下错误界面“{C4930E79-2989-4462-8A60-2FCF2F2955EF}” COM组件调用QueryInterface:不支持此接口(从HRESULT异常:0x80004002(E_NOINTERFACE)) 。

它thows上线除外

IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject;

这个确切的行测试项目工作的罚款。 我知道用户是有效的UserPrincipal,Googleing我发现这通常只需要的DLL重新登记,但即使卸载和重装来后,它仍然是行不通的。 我缺少什么引起我的DLL停止工作。

Answer 1:

我知道这是一个古老的线程,但因为我有麻烦找最近所有必要步骤,以获得终端服务组件在Windows 7上的工作,我想分享我发现了什么。 我想下面的步骤是不是从一台服务器复制tsuserex.dll并试图注册它更可靠。

据我了解,在任何操作系统上需要的用户帐户的安装才能修改终端服务远程服务器管理工​​具(RSAT)属性编程。 在某些版本的Windows,这需要一个下载。 但是,在Windows 7上,RSAT已安装。

但是你可能需要使用控制面板(APPWIZ.CPL)在配置选项来启用它。 在“打开或关闭Windows功能”转到“远程服务器管理工​​具”,然后确保“远程桌面服务工具”被选中。

我没有在此之后(并重新启动)我可以通过PowerShell中(例如,设置QADUser -Identity为testUser -TsHomeDirectory“C:\ tshome”)使用的组件从tsuserex.dll,并通过添加在Visual Studio 2010(参考以 “tsexusrm 1.0类型库”)。



Answer 2:

你几乎肯定需要在目标机器上重新注册您的TLB。 什么可能发生的事情是你有你的组件,接口或类型GUID没有硬编码在应用程序中,因此它在每个重建改变。 因此,重新构建和部署后,你的类型不再与以前注册的TLB相匹配。



Answer 3:

正确的答案是,我不reliseing我的构建环境没有改变一个白痴。 我搬到了一个新的workstaion这是Windows 7的corprate而不是服务器2003年的时候,我开始对这个项目。 Win7的总公司没有在其系统tsuserex.dll。



Answer 4:

Visual Studio中生成设置“平台目标”禁用=>“不想32位”解决问题。



文章来源: Can not reference a Dll that worked earlier