在过去的几周里,我一直在制作一个家长控制程序(仅供我的朋友和我自己),用Python(这是我所知道的)。我使用CX_Freeze来获取.exe
,它运行得非常好。一切都很棒......但是我需要一种方法让这个过程对标准用户不可攻击。 (只是标准用户。如果需要,我希望管理员能够轻松地杀死它。)
我正在寻求一种方法,将我的.exe
变成一个Windows服务,从而使它成为" SYSTEM"并且不受标准用户的影响。到目前为止,该服务无法使用taskkill /im
来终止进程,也无法创建必需的setup .txt
文件。
由于该方法似乎失败了,我想我会问是否有人知道如何让一个过程不能触及标准用户?我不完全确定专业的家长控制/键盘记录器/病毒防护软件使用什么来阻止用户杀死这个过程,但也许是这样的?
答案 0 :(得分:0)
将其作为服务可能是正确的方法 - 因为这是自动启动具有一些管理员权限的流程的最佳方式。
我认为您的服务无法杀死其他进程的原因是由于用于运行该服务的帐户。
服务可以作为系统,本地服务,网络服务或指定的帐户/密码运行。 这里的想法是限制服务只允许访问他们需要的东西。 “网络服务”服务几乎无法访问本地资源,而“本地服务”则无法访问网络。 MSDN拥有所有细节。
我不记得在服务注册过程中你究竟如何指定这一点的详细信息,但我认为这非常简单。
您还会注意到“允许服务与桌面交互”复选框。 通常,您不希望服务直接控制任何UI,因为UI很难防御攻击 - 其他进程可能会发送导致服务恶作剧的消息 - 可能会让他们破解系统。
我认为,出于您的目的,使用管理员帐户的特定登录就足够了。 在“services.msc”中,选择您的服务非常简单,并输入要运行的服务的用户名/密码。
答案 1 :(得分:0)
所以,我知道这个问题大约有5年历史了,但是您甚至可以使它对于管理员来说甚至是无法杀死的。使程序以管理员身份运行,因此只有管理员才能杀死它。然后,创建一个循环,使该循环不断杀死(consent.exe是UAC弹出窗口)。要终止此过程,您需要成为管理员,但不能成为管理员,因为您不能接受UAC提示。但是有一个问题!如果通过UAC设置禁用UAC,则可以成为管理员并终止该过程。这可以用作一种故障保护。