- 注册时间
 - 2021-4-16
 
- 最后登录
 - 2023-8-10
 
- 在线时间
 - 2 小时
 
 
 
 
 
编程入门 
  
	- 龙马币
 - 34 
 
 
 
 
 | 
 
 
方法一: 通过内核导出的变量。 
 
Windows 内核导出了一个变量.一个 ULONG 类型的指针.InitSafeBootMode .用于确定系统运行于何种模式下.驱动程序可以用这个导出的变量来判断系统当前处于何种模式下.下列是关于这个变量的一些取值的说明: 
 
Value  Mode   
0  The operating system is not in Safe Mode.   
1  SAFEBOOT_MINIMAL   
2  SAFEBOOT_NETWORK   
3*  SAFEBOOT_DSREPAIR(仅用于windows 域控制器)   
 
要使用这个变量可以参考如下: 
 
extern PULONG InitSafeBootMode; 
 
然后便可以使用类似如下的代码片断做判断. 
 
if (*InitSafeBootMode > 0) { 
// The operating system is in Safe Mode. 
// Take appropriate action. 
// 
} 
 
 
方法二: 通过注册表 
 
在安全模式下,系统将修改注册表中的一处键值,来记录当前登录的模式。 
 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Option 项下的 
 
OptionValue 的值,REG_DWORD 类型。 
 
0:正常模式(正常模式下,OptionValue 项一般不存在) 
 
1:Mini 安全模式 
 
2:带网络连接的安全模式 
 
在 Windows 启动的时候,我们可以看到还有个带命令行的安全模式, 
 
这种模式下 OptionValue 的值也为 1(与Mini 安全模式相同),另外有添加了一个键值。 
 
UseAlternateShell     REG_DWORD 类型。 值为1。 
 |   
 
 
 
 |