2014-01-30 33 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問題。它現在有效。謝謝! –