启动在 Windows 用户登录时模拟的应用程序

Posted

技术标签:

【中文标题】启动在 Windows 用户登录时模拟的应用程序【英文标题】:Launch application impersonated on windows user logon 【发布时间】:2011-01-08 08:19:43 【问题描述】:

是否可以启动用 .net 编写的 Windows 桌面应用程序以在 Windows 用户登录时模拟到 SYSTEM 帐户运行?

这个问题的主要目的是防止用户杀死我的桌面应用程序,我在网络上找不到特定的解决方案。

我想知道防病毒应用程序是如何做到这一点的,因为目前我正在为 Windows 端点开发一个开源数据泄露预防工具 MyDLP。

任何想法将不胜感激。

【问题讨论】:

【参考方案1】:

不,没有办法阻止用户停止在其会话中运行的应用程序。任何严肃的、合法的应用程序都不会远程考虑覆盖用户操作并拒绝关闭。

由于您所描述的“在用户登录时以 SYSTEM 身份运行的应用程序”并不存在,因此最接近的等价物是服务。作为服务运行的应用程序无法与会话交互(曾经有一种方法,但 Vista 非常明确地禁止这样做)。

需要持续运行的应用程序必须部署两个组件,一个是执行工作的服务部分,另一个是在用户会话中运行并通过 IPC 与服务交互的交互式独立应用程序。

【讨论】:

我明白了。我有一个在后台运行的服务,我知道让服务与桌面交互是不可取的。但是,当我使用钩子时,AV 应用程序会将其视为病毒,并且我没有任何其他方式来控制退出事件。

以上是关于启动在 Windows 用户登录时模拟的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Windows 服务启动进程到当前登录的用户会话

模拟时使用 OpenFileDialog 访问映射驱动器

计划启动 C# 应用程序无法为登录用户显示表单

在 WCF 服务中使用模拟时 SQL 登录失败

如何在C#中模拟没有密码的Windows身份验证登录用户

Windows添加自定义开机用户登录启动程序