2009-10-12 53 views
3

我不得不深究這一點,因爲在Windows 2003/XP上運行良好的代碼不在Windows 7上。使用CreateProcessAsUser啓動的應用程序失敗,並顯示0xc0000142錯誤代碼。我以前的代碼與MSDN上的Starting an Interactive Client Process in C++可用的代碼之間的區別在於我沒有設置權限,也沒有設置Window Station和桌面。我已經根據示例更新了代碼,但是我非常想知道在較新的Windows中哪些更改會使交互式Window Station中的運行進程成爲需求?爲什麼CreateProcessAsUser需要Vista/Windows 7上的交互式窗口工作站?

+0

你可以分享你的問題是如何解決的嗎? – menjaraz 2012-04-14 12:05:43

+0

問題依然存在。我也在尋找解決方案。會話0隔離是遊戲的名稱。在會話0中運行的任何進程都無法創建GUI實例。交互式客戶端運行 - 但沒有顯示GUI! – 2013-09-10 13:54:49

+0

正如我在帖子中所說的,我只是根據MSDN示例更改了自己的代碼。亨利,請注意,我的過程是一個命令行,沒有終端。所以我仍然想知道爲什麼我需要一個交互式會話來運行它。 – 2013-09-11 07:17:05

回答

0

至少有一部分需求來自在與服務不同的會話中運行交互過程的更改。這樣做是爲了使應用程序不能針對特權服務運行「破碎」式的攻擊。更多信息可在here

+0

是的,我在研究這個問題時偶然發現了這個問題。儘管這個問題並不完全相關。在_ordinary_ executable使用CreateProcessAsUser啓動另一個進程的情況下,Windows 7和Windows 2003/XP會發生不同的情況,因爲XP進程成功啓動並且在較新的OS上以0xc0000142失敗。顯然這個過程並沒有進入交互式會話,因爲如果我按照MSDN的例子做到這一點,它就可以開始正常工作。我很想知道實際發生了什麼以及自XP以來發生了什麼變化。 – 2009-10-29 14:56:41