如何保护您的软件不被禁用

时间:2010-11-23 18:33:11

标签: c++ windows

我们在Windows上运行此客户端应用程序。它的核心是2个NT服务。用户拥有管理员权限,主要是笔记本电脑用户。因此,如果他们知道自己在做什么,他们就可以禁用服务并绕过我们的软件。

解决此问题的“标准”方法是什么?

有什么想法?我有一个“隐藏”的应用程序,它在启动时运行并检查客户端状态。如果他们被禁用,它会启用它们,安排自己在另一个小时内运行并继续做同样的事情......如果我能够很好地隐藏这个应用程序,那应该可行......不是最漂亮的方法......

其他想法?

由于 礼

5 个答案:

答案 0 :(得分:13)

让他们。

不要妨碍那些知道自己在做什么以及他们想要做什么的用户。

就个人而言,如果我安装了一个不允许我随意关闭它的软件,我会卸载它并找到另一个软件。当程序员认为他们比我更了解什么对我最好时,我讨厌它。

编辑:

我已重新格式化我的硬盘驱动器以摆脱此类应用程序。例如,rootkit。

答案 1 :(得分:11)

如果这是一种工作策略类型,并且您的用户需要运行此服务,则他们不应具有对其计算机的管理员访问权限。管理员用户可以对此进行任何操作。

(非管理员的用户可以使用基于Linux的NT密码重置CD,无论如何都不能成为管理员......)

答案 2 :(得分:5)

  

解决此问题的“标准”方法是什么?

标准方法是 NOT 来做背后的事情。

  • 如果您的服务应该打开,则会在用户关闭时向用户发出警告。
  • 如果您持久警告机器启动时(并且它未启动)
  • 如果你想要在他们登录时警告他们(并且它没有打开)

如果您希望您的软件更频繁地发出警告或明确地执行用户不希望您这样做的事情。

现在,如果您是贵公司的IT部门 然后教育您的用户并告诉他们不要在公司笔记本电脑上禁用公司软件。这样做会导致纪律处分。但是,您还必须提供一种方便反馈的方法,以便您可以跟踪问题(如果人们关闭您的应用程序,则存在潜在问题)。

答案 3 :(得分:1)

最好的方法是使用“隐藏”应用程序从应用程序可以启动的每个地方进行泛洪。即使您的用户可以找到某些地方,他们也会错过其他地方。您需要定期恢复所有位置(例如,每五分钟恢复一次,以免给用户足够的时间来清理他们的计算机)。这些地方包括但不限于:

  • 所有autoruns:注册表中的Run和RunOnce(HKCU和HKLM);从“开始”菜单中自动运行。
  • Winlogon脚本。
  • 任务计划程序。
  • 资源管理器扩展:shell扩展,工具栏等。
  • 替换HKCR \ exefile \ shell \ open \命令,先启动应用程序,然后执行命令。您可以使用.bat,.cmd文件等执行此操作。
  • 很多其他地方。您可以使用WinInternals Autoruns获取最常见的列表(请务必选中选项>包含空位)。

将应用程序添加到autoruns时,请使用隐藏系统名称,例如“svchost.exe”。将应用程序放入系统文件夹。大多数用户将无法区分您的文件和系统文件。

您可以尝试使用自己的可执行文件替换MS Word和其他常见应用程序的可执行文件。运行时,检查主应用程序是否正在运行,然后运行原始应用程序(在更换前复制它们)。请务必从您替换的应用程序中提取图标并使用它们。

您可以使用多个应用程序/服务。如果一个停止,另一个注意到它并再次执行它。所以他们互相保护。

答案 4 :(得分:0)

使用大多数标准服务,您可以通过服务恢复设置配置大部分内容并禁用停止选项。

那么是什么让你想要更严格地控​​制你的服务呢?

例如,您创建一个(安全性?)“服务”,您认为它与Windows一样重要,允许用户访问桌面或运行远程过程。

它必须非常安全,关闭它的唯一方法是卸载应用程序? 如果你在哪里停止这项服务,你会希望winlogon重置并返回登录页面或重新启动整个PC。

请参阅企业桌面管理工具(如Novell Xen)