我們正在開發一個C#.NET窗口服務。模擬用戶
我們的服務正在系統帳戶下運行,我們正試圖模擬登錄的用戶USER。 模擬工作正常,即在模擬後調用System.Security.Principal.WindowsIdentity.GetCurrent()
時,我們得到正確的用戶'USER'。
問題是,當我們嘗試訪問用戶配置文件時,我們沒有得到預期的結果。 一個例子是訪問註冊表CURRENT_USER。我們得到一個訪問被拒絕的錯誤。 使用我們假設部分使用註冊表的第三方功能時,我們會獲取「真實」(模擬前)用戶的詳細信息。 此外,在撥打Environment.ExpandEnvironmentVariables("%TEMP%")
時,我們將獲取系統配置文件,而不是登錄的用戶配置文件。
有沒有辦法完全模仿不同的用戶? 我知道我們可以使用LoadUserProfile來獲取特定的用戶配置文件,但這對我們並不好,因爲我們正在運行使用當前用戶配置文件的第三方dll。
我們的模擬代碼在this
首先,你應該使用System.IO.Path.GetTempPath();如果仍然不起作用,這可能是你的問題:http://stackoverflow.com/questions/944483/how-to-get-temporary-folder-for-current-user看到接受的答案,以及它是如何工作的。 – lahsrah
讓我更具體。我們正在使用對我們無法更改的第三方dll的調用。所以如果他們預計特定的用戶配置文件,我們必須使該進程與該用戶配置文件一起運行。 – user844541
@ user844541請再次閱讀我的鏈接。 – lahsrah