2009-09-26 83 views
0

有沒有辦法強制當前交互(登錄)用戶註銷(不知道這是不推薦),然後用新的用戶帳戶登錄(交互式 - 不使用像LogonUser和其他模擬技巧)來模擬有人按LOGOFF,然後選擇一個新帳戶登錄...?如何以編程方式註銷當前用戶並以另一用戶身份登錄?

問題是我的服務以編程方式創建一個新的用戶帳戶 - 我需要找到一種方法來創建其相應的用戶配置文件。從我所能看到的唯一方法是將物理註銷當前用戶,然後以新用戶身份登錄(這將創建HKCU的用戶配置文件,文檔&設置等)。聽起來有點瘋狂,但我找不到更好的方式...

所以,我需要找到一種方法來強制註銷&登錄操作(從我運行的Windows服務在LocalSystem下) - 我擁有所有所需的證書和訪問權限......是否可以使用系統函數調用?

對於註銷我認爲我可以使用WTSLogoffSession(...),仍然試圖讓它的工作,但似乎很有前途 - 但我不知道如何做登錄... 如果有更好的方法解決我的問題,我所有的耳朵:)

任何幫助或提示將不勝感激...... 謝謝,

+1

是否有以編程方式創建用戶帳戶的正當理由? – 2009-09-26 17:39:57

+0

是否有正當理由強制某人註銷? – 2009-09-26 17:51:19

+0

只有這樣我纔可以與其他用戶登錄並強制創建用戶配置文件(HKCU,Documents&Settings等)...我無法找到更好的方法... – Shaitan00 2009-09-26 19:36:59

回答

0

微軟在C++中有這個解決方案,你可以使用它來破解一個c#解決方案,或者放入一個DLL並使用COM interop調用它。

http://support.microsoft.com/kb/196070

+0

試過這一個 - 它似乎並沒有在我的系統上工作(Windows 2000 Pro和Win XP SP2) - 我沒有遇到任何錯誤或異常情況,帳戶已創建,LoadProfile運行 - 但用戶配置文件不會創建。 – Shaitan00 2009-09-26 20:00:36

+0

沒關係 - 我認爲現在已經解決 - 我錯誤地加載了一些參數... – Shaitan00 2009-09-26 20:27:29

+0

你如何做這個C#? – jaysonragasa 2010-03-12 07:12:59

0

你確實有必要以登錄用戶或只是創建?對於創作,你可以使用

  • NetGroupAdd()
  • NetUserAdd()
  • NetGroupAddUser()
  • NetLocalGroupAdd()
  • NetLocalGroupAddMember()

的API

+0

但是從什麼我知道 - 這些都不會爲您創建用戶配置文件......他們將以用戶身份(工作正常)登錄,但不會顯示文檔和設置,不會顯示HKEY CURRENT USER等等,直到發生交互式登錄(從我見過)。 或者做一個你列出的方法做一些特別的事情?我還沒有嘗試過每一個...... – Shaitan00 2009-09-26 18:33:33

+0

http://support.microsoft.com/kb/196070,LoadUserProfile應該做的竅門 – AlexEzh 2009-09-26 21:08:45

相關問題