我一直在研究Windows XP的應用程序,該應用程序需要在啓動時使用管理級別權限同時啓動Windows,所以我繼續添加並添加該exe使用任務計劃程序「在系統啓動時運行」。計劃啓動C#應用程序無法顯示已登錄用戶的表單
在任何給定的時間都不應該有超過一個應用程序實例運行。理想情況下,應用程序將在Windows啓動時啓動,然後無論用戶是登錄還是用戶在一天中註銷並登錄,我的應用程序將始終在後臺運行。這樣,即使用戶使用「快速用戶切換」進行切換,我的應用程序仍將保持從用戶到用戶的運行狀態。
所有這一切似乎都正確地工作到一個點。然而,偶爾我的應用程序需要顯示一個表單或以某種方式與用戶交互,這是它破壞的地方。表單不顯示(儘管我相信它們正在運行)。如果我使用Process類並嘗試執行程序,它們在任務管理器中顯示爲正在運行,但實際上並未顯示。他們在檢查過程中沒有列出Process Hacker中的任何句柄。這就像他們只是在後臺默默地運行。
由於多種原因,我不能只是將任務更改爲在用戶登錄時運行。一,我很確定我將不得不將計劃任務添加到每個用戶。二,應該只運行這個程序的一個實例,如果有人使用快速用戶切換,那麼恐怕有兩個程序實例會運行。即使我發現一個實例已經運行,它也不能解決問題,因爲用戶#1的實例#1無法顯示用戶#2的窗體/窗口(我不認爲,如果我是)
理想情況下,我想保持它在系統啓動時運行,並找出爲什麼我不能顯示任何窗口。
有關該程序的一些注意事項,它首次啓動時不會顯示任何內容。它創建了一個形式
WndHidden wnd = new WndHidden()
但隨後只運行Application.Run()
而不經過形式,然後只是等待某些系統提示,用於當顯示形式/消息給用戶。
我在做什麼錯?
可能會有所幫助:http://serverfault.com/questions/458848/can-i-schedule-a-windows-task-to-run-in-an-interactive-desktop-session – inquisitive
在哪個用戶帳戶下EXE運行? – Kurubaran
它作爲「AdminUser」運行,它是計算機上的唯一管理員帳戶,其他人都是有限的用戶。 – zoombini