禁用安全模式

安全模式是Windows操作系统中一种特殊的登陆系统的方式。该模式是在不加载第三方设备驱动程序的情况下启动操作系统,进入后可以删除顽固文件、查杀病毒、解除组策略等。因为企业办公网环境下往往会部署一些安全防护类的软件,用户如果能够进入安全模式,则轻易的就可以干掉这些防护类、监控类的软件,所以企业内部往往会禁用安全模式。手动禁用往往比较麻烦,网上下载的工具质量又参差不齐,因此本文将介绍禁用安全模式以及禁用之后再启用安全模式的代码层面实现方法,你自己就可以写一个,快捷方便安全。


方法其实比较简单,就是把注册表

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SafeBoot

键下的MinimalNetwork键删掉 或 改名即可。推荐改个名字(方便以后恢复启用安全模式),比如: 改成Minimal_backup,Network_backup 等。如果手动的进行修改的话,由于权限不足,操作会比较麻烦,可参考百度经验

本文主要介绍下如何使用代码的方式去实现禁用,文章最后会给出现成的工具下载链接。

  • 第一步,调整进程权限
CAccessToken token;CAccessToken token;
token.GetProcessToken(TOKEN_ALL_ACCESS);
token.EnablePrivilege(SE_TAKE_OWNERSHIP_NAME);
  • 第二步,调整指定注册表键的权限

下面以更改 MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Minimal 的权限为例,Network键是一样的

SetNamedSecurityInfoW(L"MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Minimal", 
    SE_REGISTRY_KEY, 
    OWNER_SECURITY_INFORMATION, 
    (PSID)Sids::Admins().GetPSID(), 
    NULL, 
    NULL, 
    NULL);

CDacl dacl;
dacl.AddAllowedAce(Sids::Admins(), GENERIC_ALL);

SetNamedSecurityInfoW(L"MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Minimal", 
    SE_REGISTRY_KEY, 
    DACL_SECURITY_INFORMATION, 
    NULL, 
    NULL, 
    (PACL)dacl.GetPACL(),
    NULL);
  • 第三步,将 Minimal 和 Network 改名或删除即可

由于比较简单,这一步就不贴代码了


上面介绍的是禁用的方法,启用的方法就是其逆过程,将之前改的名字再改回去即可。

禁用安全模式工具下载链接:DisableSafeMode

使用方法:1. 双击运行是禁用安全模式,需要以管理员方式运行   2. 命令行方式执行,带任意的参数(比如: DisableSafeMode.exe xxx),是启用安全模式。

工具会修改敏感位置注册表,所以安全工具会弹个窗警告一下。如果需要代码的话,请注明理由并留下邮箱,单发。

注意:对于个人用户其实是不推荐禁用安全模式的,当因为某些原因无法进入系统时,安全模式是救命稻草。




4 Comments

  • 我尝试了使用NtRenameKey修改注册表项返回5 ERROR_ACCESS_DENID.
    权限按你文章的代码进行了处理。还是一样返回5.

  • 我尝试了使用NtRenameKey修改注册表项返回5 ERROR_ACCESS_DENID.
    权限按你文章的代码进行了处理。还是一样返回5. 分享一份你的代码给我参考一下。
    我的邮箱:[email protected]

  • 按照文章中的参考代码,运行没有报错,但是注册表权限没有改成功。运行你提供的exe文件,是可以用的。希望提供下完整代码,参考一下。

  • 楼主你好,根据你的提供的工具确实可以使用,请问方便可否分享一下源码 谢谢

  • Comments are closed.