我正在使用各種Windows服務在專用網絡中的不同計算機上運行的系統。網絡中的任何計算機都可以運行遠程與這些服務交互的客戶端應用程序。作爲我們軟件包的一部分,我們擁有的功能可以讓用戶查看網絡中的任何服務是否遇到問題,並重新啓動其中的任何服務。如何使用NEW_CREDENTIALS在C#中模擬用戶?
爲了得到這個工作,我們使用user impersonation和Service Controller class:我們要求用戶提供用戶名和託管落水服務的計算機上的管理帳戶的密碼,冒充該管理員,然後重新啓動與ServiceController的服務。這在大多數情況下都適用,但我們不能模擬我們某些服務器上的管理員。我的理解是,爲了使用戶模擬起作用,被模擬的帳戶必須位於本地計算機上或Active Directory組的一部分中,但所涉及的服務器只有自己本地的帳戶。
我注意到有很多LogonUser
方法的參數開始模擬,並開始與他們一起玩,看看他們中的任何人是否會解決我的問題。當我試圖登錄類型值設置爲「新憑證」(第9),我看到了一些奇怪的(但可能有用的)行爲:
- 我可以,我不能與以前 工作的服務器上重新啓動服務
- 如果我嘗試重新啓動已關閉的服務並提供不正確的密碼,則該服務仍會重新啓動。
爲什麼我看到這種行爲?如果原因很好,我可能會使用這個設置來徹底擺脫要求用戶登錄的問題。
有人可以仔細檢查我是否確實發生了什麼?我知道自從我使用模擬後可能會有一些安全問題,所以如果我不瞭解情況,我不想讓自己陷入麻煩:P – Kevin 2012-07-31 16:17:04