2010-07-27 92 views
0

我有作爲系統運行的服務,我想用用戶權限產生一些用戶TS會話中的新進程。加載用戶配置文件後創建進程用戶

我正在調用LogonUser,LoadUserProfile,CreateEnvironmentBlock,CreateProcessAsUser並在用戶TS會話中spwan進程。在用戶終端服務會話中

過程(CMD.EXE)運行,但是當我試圖運行GUI應用程序,我得到以下錯誤信息:

異常EAccessViolation模塊ntdll.dll中在00022272.

模塊'ntdll.dll'中地址77D22272的訪問衝突。寫地址0000000C。

我錯過了什麼嗎?

任何幫助將不勝感激!

感謝, 利奧爾

回答

0

Launching a process in user’s session from a service。主要問題是你應該在其他TS會話上開始處理。所以你必須切換當前會話SetTokenInformationTokenSessionId。爲了能夠做到這一點,你必須啓用SE_TCB_NAME權限。

而且你必須改變桌面的安全描述符和Windows站方面的OpenWindowStationOpenDesktopSetUserObjectSecurity對象(見http://msdn.microsoft.com/en-us/library/ms681928.aspxhttp://msdn.microsoft.com/en-us/library/ms687107.aspxhttp://support.microsoft.com/kb/165194

相關問題