2010-03-19 56 views
0

我怎麼能釀出線程應用牛逼一個,使得應用程序A的用戶U1(像我一樣),但線程T的用戶U2(如超級用戶)?如何在C#線程指定用戶

感謝

+0

請讓你的問題有道理...... ** U1 **在線程** T **上做了什麼?爲什麼** U2 **也在線程** T **上?有兩個線程還是隻有一個線程?每個用戶是否有一個線程? – Kiril 2010-03-19 09:25:52

+1

對我來說聽起來很簡單......他有一個以本地用戶身份運行的應用程序,但想要派生一個線程來執行一些以高級用戶帳戶運行的工作。 – cjk 2010-03-19 09:43:50

回答

0

雖然不能直接複製,我覺得this question可能是你想要的。另一方面,你是否需要啓動模擬線程?我不知道UAC(用戶帳戶控制)的效果如何。從這個角度來看,UAC COM elevation也可能是一個有趣的讀取,因爲您可以創建一個提升的COM對象,並且可以在.NET中編寫一個COM對象。

如果您實際需要的是以管理員身份執行某些代碼,則需要使用第二種方法,並讓用戶帳戶控制處理剩下的部分。雖然在XP上運行可能會使事情變得更加複雜(或者需要以管理員身份運行整個應用程序),但對於Vista和7(以及將來)來說,這很容易。

1

您需要在線程上致電WindowsIdentity.Impersonate()。它是您使用P/Invoke的具有的極少數.NET類方法之一,LogonUser()是獲取模擬令牌所必需的。它在鏈接的MSDN文章中顯示的代碼示例中有很好的描述。