原理
在 Windows 操作系统核心中导出了一个指针变量,它保存了一个声明为 ULONG 类型的数据,这个指针变量被命名成 InitSafeBootMode 。这个变量保存着现在操作系统的安全模式情况的值。在设备驱动中,可以检查这个变量的值来判断 Windows 操作系统是否处于安全模式。
InitSafeBootMode 取值情况如下:
0 操作系统不是处于安全模式中1 SAFEBOOT_MINIMAL2 SAFEBOOT_NETWORK
3 SAFEBOOT_DSREPAIR
注:值 3 只适用于 Windows 域控制器版本。
2. 使用方式
为了使用这个变量,需要先声明这个变量:extern PULONG InitSafeBootMode;在声明了 InitSafeBootMode 变量后,就可以按照下面的方式来使用这个变量:if(*InitSafeBootMode >0){// 操作系统现在处于安全模式中,可以采取相应的行动//}
引用:
http://luck-donkey.iteye.com/blog/911460
使用GetSystemMetrics函数
int WINAPI GetSystemMetrics(__in int nIndex);
nIndex参数为SM_CLEANBOOT(67)时的返回值:
0 - Normal boot1 - Fail-safe boot2 - Fail-safe with network boot
A fail-safe boot (also called SafeBoot, Safe Mode, or Clean Boot) bypasses the user startup files.
fail-safe boot就是通常说的“安全模式”。
NSIS中的调用示例:
Section "DetectSafeBoot"System::Call 'user32::GetSystemMetrics(i ${SM_CLEANBOOT}) i .r0'DetailPrint "Returning values:"DetailPrint "0 - Normal boot"DetailPrint "1 - Fail-safe boot"DetailPrint "2 - Fail-safe with network boot"DetailPrint "You PC started as: $0"SectionEnd
更多信息参考MSDN。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
原理
在 Windows 操作系统核心中导出了一个指针变量,它保存了一个声明为 ULONG 类型的数据,这个指针变量被命名成 InitSafeBootMode 。这个变量保存着现在操作系统的安全模式情况的值。在设备驱动中,可以检查这个变量的值来判断 Windows 操作系统是否处于安全模式。
InitSafeBootMode 取值情况如下:
0 操作系统不是处于安全模式中
1 SAFEBOOT_MINIMAL
2 SAFEBOOT_NETWORK
3 SAFEBOOT_DSREPAIR
注:值 3 只适用于 Windows 域控制器版本。
2. 使用方式
为了使用这个变量,需要先声明这个变量:
extern PULONG InitSafeBootMode;
在声明了 InitSafeBootMode 变量后,就可以按照下面的方式来使用这个变量:
if(*InitSafeBootMode >0)
{
// 操作系统现在处于安全模式中,可以采取相应的行动
//
}
引用:
使用GetSystemMetrics函数
int WINAPI GetSystemMetrics(
__in int nIndex
);
nIndex参数为SM_CLEANBOOT(67)时的返回值:
0 - Normal boot
1 - Fail-safe boot
2 - Fail-safe with network boot
A fail-safe boot (also called SafeBoot, Safe Mode, or Clean Boot) bypasses the user startup files.
fail-safe boot就是通常说的“安全模式”。
NSIS中的调用示例:
Section "DetectSafeBoot"
System::Call 'user32::GetSystemMetrics(i ${SM_CLEANBOOT}) i .r0'
DetailPrint "Returning values:"
DetailPrint "0 - Normal boot"
DetailPrint "1 - Fail-safe boot"
DetailPrint "2 - Fail-safe with network boot"
DetailPrint "You PC started as: $0"
SectionEnd
更多信息参考MSDN。