首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法引用以前工作过的Dll

无法引用以前工作过的Dll
EN

Stack Overflow用户
提问于 2010-01-16 05:09:27
回答 4查看 4K关注 0票数 1

我正在尝试以编程方式更改终端服务设置。I learned that you must use tsuserex.dll。作为c#,我通过tlbimp运行tsuserex并创建TSUSEREXLib.dll,然后将其注册到regasm。我让它正常工作,并作为一个概念教授用它写了一个框架程序。然而,今天当我运行我的程序时,我做了一些修改,我得到了错误

无法将'System.__ComObject‘类型的COM对象强制转换为接口类型'TSUSEREXLib.IADsTSUserEx’。此操作失败,因为由于以下错误,对接口IID为'{C4930E79-2989-4462-8A60-2FCF2F2955EF}‘的COM组件的QueryInterface调用失败:不支持此类接口(来自HRESULT的异常: 0x80004002 (E_NOINTERFACE))。

它会释放行上的异常

代码语言:javascript
复制
IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject;

这一行在测试项目中工作得很好。我知道用户是一个有效的UserPrincipal,谷歌我发现这通常只是需要动态链接库重新注册,但即使在卸载和重新加载后,它仍然不会工作。我遗漏了什么导致我的dll停止工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-09 00:49:54

我知道这是一个老帖子,但由于我最近在寻找在Windows7上运行终端服务组件所需的所有步骤时遇到了麻烦,所以我想分享我发现的东西。我认为下面的步骤比从服务器复制tsuserex.dll并尝试注册它更可靠。

据我所知,在任何操作系统上,您都需要安装远程服务器管理工具(RSAT),以便以编程方式修改用户帐户的终端服务属性。在某些版本的Windows上,这需要下载。但在Windows7上,RSAT已经安装。

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

在我这样做(并重启)之后,我能够通过PowerShell (例如,Set-QADUser -Identity testUser -TsHomeDirectory "c:\tshome")使用tsuserex.dll中的组件,并在Visual Studio2010中添加一个引用(到“texusrm1.0类型库”)。

票数 3
EN

Stack Overflow用户

发布于 2010-01-16 05:13:18

你几乎肯定需要在目标机器上重新注册你的TLB。可能发生的情况是,您的程序集、接口或类型GUID没有在应用程序中硬编码,因此每次重新构建时都会更改。因此,在重新构建和部署之后,您的类型不再与以前注册的TLB匹配。

票数 0
EN

Stack Overflow用户

发布于 2010-01-17 09:42:04

正确的答案是,我是一个笨蛋,因为我没有享受到我的构建环境确实发生了变化。当我开始这个项目的时候,我搬到了一个新的工作站,它是windows7corprate而不是server2003。Win7公司的系统中没有tsuserex.dll。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2074800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档