在應用中,我使用了 CreateProcess 來創建進程,
但有人發現我用 CreateProcess 啟動的程序,在vista下,會不見,但在任務管理器存在進程
朋友對我使用 CreateProcess 表示質疑,還懷疑會不會是在 vista 下面開了兩個用戶,
在用戶A下面創建的進程,界面顯示到 用戶B 去了?

這可能嗎?
還勸告我說,用CreateProcessAsUser 試試吧
CreateProcess 創建的進程不可能跑到其它用戶的界面去
CreateProcessAsUser 創建的進程只是以某個用戶的權限去執行,也不會顯示到其它用戶的界面去!!!
晚了,該睡了,有空再找下相關資料
2008-09-23
今天, 在調代碼的時候發現
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() 取到的值發現等于 "param_value_1 param_value_2" (同樣不包含引號)
導致 test.exe 讀取參數出錯
我還先還以為在 test.exe 中用 GetCommandLine() 應該是 "test.exe param_value_1 param_value_2"
記之!
2008.09.25
今天之前,界面顯示不出的問題找出原因
用 CreateProcess 調用程序 A 時沒有設置 CurrentDir, 而且 程序A 里使用了 GetCurrentDirtory() 來獲取界面資源
獲取不到,所以獲取當前路徑,還是使用 GetModuleFile 安全些
因為當前工作目錄隨時會改變
但為什么只在一臺裝 vista 的機器才會出問題,沒查出具體的原因
記之