在應(yīng)用中,我使用了 CreateProcess 來創(chuàng)建進(jìn)程,
但有人發(fā)現(xiàn)我用 CreateProcess 啟動(dòng)的程序,在vista下,會不見,但在任務(wù)管理器存在進(jìn)程
朋友對我使用 CreateProcess 表示質(zhì)疑,還懷疑會不會是在 vista 下面開了兩個(gè)用戶,
在用戶A下面創(chuàng)建的進(jìn)程,界面顯示到 用戶B 去了?

這可能嗎?
還勸告我說,用CreateProcessAsUser 試試吧
CreateProcess 創(chuàng)建的進(jìn)程不可能跑到其它用戶的界面去
CreateProcessAsUser 創(chuàng)建的進(jìn)程只是以某個(gè)用戶的權(quán)限去執(zhí)行,也不會顯示到其它用戶的界面去!!!
晚了,該睡了,有空再找下相關(guān)資料
2008-09-23
今天, 在調(diào)代碼的時(shí)候發(fā)現(xiàn)
BOOL bCreateProcess = ::CreateProcess(strPath, strParam, NULL, NULL, TRUE, 0, NULL, strCurrentPath, &si, &pi);
strPath = "c:\test.exe" (不包含雙引號)
strParam = "param_value_1 param_value_2"
strCurrentPath = "c:\"
然后在 test.exe 里用 GetCommandLine() 取到的值發(fā)現(xiàn)等于 "param_value_1 param_value_2" (同樣不包含引號)
導(dǎo)致 test.exe 讀取參數(shù)出錯(cuò)
我還先還以為在 test.exe 中用 GetCommandLine() 應(yīng)該是 "test.exe param_value_1 param_value_2"
記之!
2008.09.25
今天之前,界面顯示不出的問題找出原因
用 CreateProcess 調(diào)用程序 A 時(shí)沒有設(shè)置 CurrentDir, 而且 程序A 里使用了 GetCurrentDirtory() 來獲取界面資源
獲取不到,所以獲取當(dāng)前路徑,還是使用 GetModuleFile 安全些
因?yàn)楫?dāng)前工作目錄隨時(shí)會改變
但為什么只在一臺裝 vista 的機(jī)器才會出問題,沒查出具體的原因
記之