判断
Windows
是否处于安全模式
一、前言
在开发驱动的时候,在有的情况下需要查看操作系统是不是运行在安全模式下。比如我们如果判断出系统正处于安全模式下,就不让驱动程序加载成功。
二、原理
微软以及估计到了开发中有这样的需求,在
Windows
操作系统核心中导出了一个指针变量,它保存了一个声明为
ULONG
类型的数据,这个指针变量被命名成
InitSafeBootMode
。这个变量保存着现在操作系统的安全模式情况的值。在设备驱动中,可以检查这个变量的值来判断
Windows
操作系统是否处于安全模式。
InitSafeBootMode
取值情况如下:
值 |
模式 |
0 |
操作系统不是处于安全模式中
|
1 |
SAFEBOOT_MINIMAL
|
2 |
SAF
E
B
O
O
T
_
N
ET
W
O
R
K
|
3 |
SAF
E
B
O
O
T
_
DS
R
EP
A
I
R
|
注:值
3
只适用于
Windows
域控制器版本。
三、使用方式
为了使用这个变量,需要先声明这个变量:
extern PULONG
InitSafeBootMode;
在声明了
InitSafeBootMode
变量后,就可以按照下面的方式来使用这个变量:
i
f
(
*
In
i
t
S
af
e
B
o
ot
M
o
d
e
>
0
)
{
/
/
操作系统现在处于安全模式中,可以采取相应的行动
//
}
四、使用注意
为了阻止在安全模式下对驱动进行操作,根据不同的驱动类型按照下面的列表的使用建议进行处理:
1.
功能驱动
如果驱动的服务启动类型是
SER
V
I
CE_
BOO
T_
ST
AR
T
,在功能驱动的AddDevice
例程中检查InitSafeBootMode
的值。如果系统处于安全模式下,则返回错误。
注:在DriverEntry
例程中,返回值一定不能为错误。
2.
过滤驱动
如果驱动是过滤驱动,则在系统启动过程中在
AddDevice
例程中检查InitSafeBootMode
的值。如果操作系统处于安全模式下,则:
1)
不要附加过滤设备到设备堆栈上去
2)
在过滤驱动的
AddDevice
例程中返回成功。
3.
其他驱动
对于其他驱动,在驱动的
DriverEntry
例程中检查
InitSafeBootModed
的值。如果系统处于安全模式,则返回表示错误的代码。
分享到:
相关推荐
综上所述,"易语言API判断安全模式"是通过调用`GetSystemMetrics`等API来检测系统是否处于安全模式,这个过程涉及到易语言的API导入、函数定义、调用以及结果分析等多个编程环节。了解和掌握这些知识点,可以帮助...
"判断当前系统是否处于全屏独占的模式" 在现代计算机系统中,全屏独占模式是一种常见的操作模式,它允许用户专注于当前应用程序,忽略其他干扰因素。判断当前系统是否处于全屏独占的模式是非常重要的,因为它可以...
### 如何在VB中判断Windows9x的运行模式 在早期的编程环境中,尤其是使用Visual Basic(简称VB)进行开发时,了解操作系统的工作模式是非常重要的。对于Windows 9x系列操作系统(包括Windows 95、98和ME),判断其...
API函数`GetSystemMetrics`可以用来检测系统是否在安全模式下运行,这个函数返回值中的SM_SECURE位如果被设置,就表示系统处于安全模式。 下面是一个简化的易语言API调用示例,用于检查系统是否在安全模式: ```e ...
本篇将详细介绍如何使用C#来判断本地文件是否处于打开状态。 首先,我们要理解的是,操作系统通过文件句柄(file handle)来管理对文件的访问。当一个进程打开一个文件时,操作系统会为该进程分配一个唯一的文件...
这里我们将详细探讨如何在C++中判断一个窗口是否处于全屏状态,以及如何与debugview.exe工具配合获取输出信息。 首先,让我们了解窗口全屏的基本概念。在Windows操作系统中,窗口可以有多种显示模式,包括普通窗口...
因此,判断系统是否处于安全模式对于开发者来说是重要的,特别是在编写需要与操作系统交互或者需要确保正常运行环境的应用程序时。 易语言API判断安全模式的源码通常会涉及到以下知识点: 1. **API调用**:易语言...
标题中的“判断Caps Lock键是否开/关”指的是在编程或系统操作中,我们需要检测计算机上的Caps Lock(大写锁定)键是否处于开启或关闭状态。这个功能在各种应用场景中都可能用到,例如,为了确保用户在输入密码时...
1. **判断数据库是否处于归档模式**:首先需要确认当前数据库是否处于归档模式,这可以通过 SQL*Plus 工具中的 `archive log list` 命令来实现。 ```sql SQL> archive log list; ``` 2. **设置归档模式**:如果...
在"易语言源码易语言判断桌面是否锁定源码.rar"这个压缩包中,包含的源代码是用于实现一个功能,即检测用户的桌面是否处于锁定状态。这一功能在某些应用中十分有用,例如,当用户离开电脑或系统进入屏保模式时,程序...
在编程领域,特别是使用易语言(EasyLanguage)进行软件开发时,有时我们需要判断一个窗口是否处于全屏状态。易语言是一种以中文为编程语言的编程工具,它为开发者提供了直观的编程界面和丰富的函数库,使得编程对于...
以上代码展示了如何使用Mscomm32控件进行MODEM状态检测的基本流程,包括初始化控件、发送AT指令检查MODEM状态、监听输入来判断是否遇到忙音等关键步骤。通过这些操作,可以有效地管理和控制MODEM的工作状态,确保...
- 红色图标表示该组件处于正常状态,Windows优化大师在安全模式下不建议修复,以免影响系统运行。 - 蓝色图标表示程序无法确定该组件的有效性,同样在安全模式下不会进行修复。 - 绿色图标则标识出有问题的组件,...
在易语言中,有时我们需要判断程序是否处于调试状态,这对于软件安全性和优化有着重要的作用。"易语言检测调试状态"就是这样一个功能,它可以帮助开发者检测当前程序是否被调试器挂载,从而防止恶意调试或非法篡改。...
在Windows操作系统中,系统调用是用户模式与内核模式之间进行通信的关键接口。这些调用提供了对系统资源的低级别访问,如内存管理、进程和线程控制、文件操作等。以下是一些重要的系统调用函数,它们是Windows系统...
9. 休眠模式:计算机处于休眠状态时,切断电源会导致数据丢失。 10. 标题栏操作:在标题栏中间双击左键通常最大化或还原窗口,而非最小化。 11. 窗口切换:使用`Alt+Tab`组合键可以在窗口间切换,而非`Ctrl+Tab`。 ...
当macOS或Windows处于暗模式时,插件将IDEA设置为所选主题,但是当macOS或Windows处于亮模式时,将IDEA主题设置为为轻模式选择的主题。 建造 ./gradlew build 测验 ./gradlew runIde 它如何在MacOS上运行? 该插件...
用户可以据此判断是否是某个应用占用了大量带宽,以便进行限制或优化设置。 此外,Spotlight on Windows还具备数据收集和图表生成的能力。它可以记录一段时间内的系统资源使用趋势,生成可视化图表,帮助用户更好地...
例如,可以通过检测某些特定的内核模式行为来判断是否存在调试器。 **规避方法**:由于这些技术通常是操作系统级别的,因此难以直接规避。但可以通过观察这些行为的变化来推测是否处于调试状态。 ### 利用系统差异...
Windows 95支持多种启动模式,包括正常模式、安全模式和网络安全模式等。这些模式可以用来诊断和解决问题。 #### 详细解释: - **安全模式**:这是一种诊断模式,它仅加载最基本的驱动程序和服务,可用于排除硬件或...