如何在登入 Windows 時啟動 GUI 管理應用程式

如何在登入 Windows 時啟動 GUI 管理應用程式

我用 C# 編寫了一個小應用程式來控制我的 Kido 在 PC 上玩的時間。

現在,我正在尋找當孩子登入他的個人資料時以管理員身份運行此應用程式的方法。應用程式在螢幕上顯示一些警告並將一些統計資料儲存在檔案中。因此它不能隱藏/在後台運行(需要在螢幕訊息上顯示)或以標準用戶權限運行(可以刪除日誌...)

花了幾個小時嘗試透過 Windows 任務規劃程式使其工作,但我無法使該應用程式可見...

任何類型的小費都會非常讚賞!

PS 如果無法在其他用戶的桌面上運行 GUI 管理應用程式 - 也許有人可以建議我在哪裡/如何儲存日誌文件,以便(智慧)kido 可以輕鬆存取它:)

答案1

正確的方法是讓應用程式作為服務或其他使用者運行,然後將視窗發送到使用者(孩子)的桌面。請參閱有關互動式服務的 MSDN 頁面;雖然服務不再被允許真正交互地運行,但它們仍然可以間接地與用戶交互,包括在不同帳戶下運行的用戶。這WTSSendMessage函數可用於在目前登入的會話上顯示訊息框,或者您的進程可以使用CreateProcessAsUser(如果有存取權限)在使用者會話中建立一個可以與之互動的進程(而父進程仍然可以建立使用者無法刪除的日誌檔案等)。

編輯:進程不必作為服務運行才能使用這些功能。它們對於服務很有用,而且對於以其他使用者身分執行(非互動)的任何其他進程也很有用。

編輯2:對於日誌文件,可以(並且應該)為日誌記錄過程設置僅附加權限。這樣,即使程式以孩子的權限運行,它也只能追加到檔案中(不能刪除、覆蓋、截斷等)。您可以開啟僅請求附加存取權限的檔案。

當然,這並不能避免孩子直接終止進程。沒有辦法阻止儘管看門狗進程(可能作為另一個用戶運行)可以嘗試根據需要立即重新啟動它,但無需將其作為另一個帳戶運行。

相關內容