我开发了一个 C# Windows 窗体应用程序,它作为系统托盘图标在后台运行,并在单击它时执行一些操作。它应该在Windows启动并持续运行时启动,并且不允许没有管理员权限的普通用户关闭它。
做这个的最好方式是什么?我最初打算通过任务计划程序在 LocalSystem 帐户上运行它,但后来我(艰难地)了解了Session 0 隔离(即应用程序将运行但它的 UI 元素不显示)。当我使用登录用户运行它时,即使它运行提升,用户仍然可以通过任务管理器将其关闭(无需提升)。
有什么方法可以让 LocalSystem 的进程访问 UI?我有一个在会话 1 中运行的 LocalSystem 的 winlogon 和一个 csrss 进程,所以我想它可以完成,我只是不知道怎么做。或者是否有更简单的方法来禁止用户通过任务管理器关闭他们自己的进程?我能想到的唯一其他选择是创建一个额外的 Windows 服务,如果应用程序正在运行,它会继续轮询,如果有人杀死它,它会立即再次启动它——但这看起来非常笨拙(而且,我希望它在它运行时保持死态)自行崩溃,以避免单个错误导致进程创建无限循环)。