我的系統有2個帳戶(USER和ADMIN)和一個服務(Service.exe)在LocalSystem下運行。 用戶登錄到USER帳戶後,LocalService可以以ADMIN用戶的身份啓動進程(CreateProcessAsUser(...))。CreateProcessAsUser()不顯示運行進程的CreateWindow [C#]
服務運行的進程(Tool.exe)是一個傳統的C++應用程序,它執行作業並使用CreateWindow(...)向用戶顯示信息,但當通過服務啓動它時,窗口不會顯示...
當通過服務創造的過程中,我第一次加載配置文件ADMIN用戶的&環境,以便正確的上下文中使用... (仍然希望窗口將顯示到用戶)
現在,最初我以爲這會導致一個問題,因爲管理員正在運行的過程,爲什麼CreateWindow(...)輸出在USER桌面,所以我嘗試通過一個簡單的命令行test.exe應用程序,當以ADMIN的身份啓動時,命令提示符窗口出現 - 那麼爲什麼它能正常工作,因爲CreateWindow(...)無法正確顯示?
有關如何獲取在ADMIN下運行以顯示在USER登錄會話中的狀態(使用Tool.exe中的CreateWindow)的任何線索?
我可以使用環境弄好了,我想下面想這可能工作,但沒有:
startInfo.lpDesktop = @"WinSta0\Default";
startInfo.dwFlags = STARTF_USESHOWWINDOW;
startInfo.wShowWindow = SW_SHOW;
的窗口創建爲(以Tool.exe)如下:
HWND hwnd = CreateWindow
(
"Tool",
"Tool WINDOW",
WS_POPUP | WS_VISIBLE,
0,0,uWidth,uHeight,
NULL,
NULL,
hInstance,
Text
);
lpDesktop是否錯誤(不完全確定這是如何工作的)?
我知道這聽起來有多瘋狂 - 我只是不想將另一個ToolDisplay.exe作爲USER與Tool.exe進行通信作爲ADMIN作爲顯示器,當Tool.exe用於處理所有內容時 - 所以檢查,看看是否有沒有處理一些這方面的好方法...
任何幫助將不勝感激...... 謝謝,
[簡體問:]
我的系統有2帳戶(USER和ADMIN),用戶始終以USER身份登錄,但在某個特定時間進程(Tool.exe)處於登錄狀態在ADMIN帳戶(通過使用CreateProcessAsUser(...)的LocalSystem服務)啓動,幾乎一切正常,除了過程(Tool.exe)應該使用CreateWindow(...)向用戶顯示狀態這一事實外, 。
當Tool.exe正在運行(如ADMIN)並且用戶以USER身份登錄時,該窗口未顯示(顯然)... 有沒有辦法顯示在ADMIN下運行的Tool.exe窗口以USER身份登錄的用戶?
任何幫助將不勝感激...... 謝謝,
簡化您的問題。這沒有任何意義。 – 2009-09-20 04:28:14