2014-01-30 30 views
-1

我在我的应用程序中执行LDAP查询的表单。但是,由于每个结果项目都需要一些处理,我决定在一个单独的线程中处理每个项目。唉,我很快意识到处理(调用COM对象中的某些方法)拒绝工作 - 因为(或者“可能”是更好的词),线程不会在同一用户帐户下产生。 COM部分工作正常,但如果作为程序的一部分执行,将返回正确信息的代码在线程中执行时不会返回正确的信息。当我搜索这个时,我发现指向安全描述符和令牌的信息。我必须承认我的经验很少。执行与主程序相同权限的线程?

任何人都可以请教我如何让TThread类作为启动并运行我的主程序的用户执行吗?

我们使用Delphi XE3。该程序通过Citrix/AD在Windows 7上执行。

非常感谢你的帮助

更新:**这竟然是一个COM问题,而不是一个线程问题。 COM的用户名参数预计为UTF8。该线程现在工作正常。

感谢大家分享他们的知识!

+0

您如何诊断? –

+0

由于生成的AD对象仅显示访客帐户可见的信息。当我点击一个对客人不可见的用户时 - 数据是空白的。 –

+0

你想要访问什么样的信息? – EProgrammerNotFound

回答

4

你的理解是错误的。线程DOES运行在与其父进程相同的用户帐户和访问权限中。它需要额外的代码(模拟等)来改变这种行为。所以其他事情正在发生。你需要继续调查。如果你需要帮助,你需要显示你的实际代码。

+0

谢谢。更新了问题以更好地反映问题。 –

+0

你说得对。这不是一个线程问题,而是一个COM问题。它现在有效。谢谢! –