中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 13:07
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]如何判断系统是否是安全模式和添加协议?
可打印版本  4,220 / 25
第1楼 HUNRYBECKY 发表于 2006-12-29 05:22
银牌会员 发帖 442 积分 1,179
[求助]如何判断系统是否是安全模式和添加协议?
我做了一个RPL无盘系统,因为要在替换大量的系统文件,在正常模式下是无法替换文件的,必须在安全模式下才能替换成功。我想实现这样的功能
1。判断系统当前运行的模式是否是安全模式?如果不是,提示用户切换到安全模式。
2。在安全模式下运行程序后RPL无盘使用的文件已经复制到系统中,但如何在本地连接属性中自动添加DLC和NETBIOS协议?(通过写注册表实现也可以)

我的部分代码(如何实现REM1和REM2中的步骤?):



目前已经解决了是否是安全模式的判断,采用9楼everest79的注册表方法和15楼NaturalJ0兄的工具都可以,非常感谢两位的帮助,现在主要的问题是如何CMD下或使用DOS工具安装网络协议。

[ Last edited by HUNRYBECKY on 2006-12-30 at 10:16 PM ]
第2楼 HUNRYBECKY 发表于 2006-12-29 05:30
银牌会员 发帖 442 积分 1,179
在ACCESS911看到一个判断是否是安全模式的函数,可是这个函数怎么用脚本来调用呢?
GetSystemMetrics

The GetSystemMetrics function retrieves various system metrics (widths and heights of display elements) and system configuration settings. All dimensions retrieved by GetSystemMetrics are in pixels.


int GetSystemMetrics(
int nIndex
);

Parameters
nIndex
[in] System metric or configuration setting to retrieve. This parameter can be one of the following values. Note that all SM_CX* values are widths and all SM_CY* values are heights. Value Meaning
SM_ARRANGE Flags specifying how the system arranged minimized windows. For more information about minimized windows, see the following Remarks section.
SM_CLEANBOOT Value that specifies how the system was started:
0 Normal boot
1 Fail-safe boot
2 Fail-safe with network boot

Fail-safe boot (also called SafeBoot, Safe Mode, or Clean Boot) bypasses the user's startup files.

int result = GetSystemMetrics(SM_CLEANBOOT);
switchresult)
{
...
}
第3楼 everest79 发表于 2006-12-29 06:18
金牌会员 发帖 1,127 积分 2,564
这个给c++用的
第4楼 HUNRYBECKY 发表于 2006-12-29 10:20
银牌会员 发帖 442 积分 1,179
自己顶一下。
第5楼 HUNRYBECKY 发表于 2006-12-29 21:35
银牌会员 发帖 442 积分 1,179
没有人回答,在顶一下,在线等待,可能有点难道,我也搜索了整个世界,找不到相关代码。
第6楼 everest79 发表于 2006-12-29 23:00
金牌会员 发帖 1,127 积分 2,564
你在安全模式下与常规模式下对比下以下注册表键值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
第7楼 HUNRYBECKY 发表于 2006-12-30 00:01
银牌会员 发帖 442 积分 1,179
Originally posted by everest79 at 2006-12-29 23:00:
你在安全模式下与常规模式下对比下以下注册表键值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control


安全模式下除了不加载网络外还去掉很多其他东西,所以通过这样比较注册表不行的。

似乎通过注册表来添加协议是不可取的,我使用注册表监视工具对比添加前后的变化,发现改变的东西太多了,还有就是网卡不同可能会影响这些注册表参数。
寻求有没有什么DOS工具或命令来添加协议?
第8楼 everest79 发表于 2006-12-30 00:18
金牌会员 发帖 1,127 积分 2,564
这个键下好像保存了系统当前启动参数,而安全模式本来就是以safereboot的参数来启动的,所以让你对比一下,因为我没试过

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=\"Microsoft Windows XP Professional\" /noexecute=optin /fastdetect /safeboot:minimal
你看这就是安全模式了
第9楼 everest79 发表于 2006-12-30 00:25
金牌会员 发帖 1,127 积分 2,564
安全模式下:


正常情况下:
第10楼 everest79 发表于 2006-12-30 00:26
金牌会员 发帖 1,127 积分 2,564
为了这个问题重启了次电脑
第11楼 HUNRYBECKY 发表于 2006-12-30 00:27
银牌会员 发帖 442 积分 1,179
Originally posted by everest79 at 2006-12-30 00:26:
为了这个问题重启了次电脑



非常感谢胸的回答。
第12楼 HUNRYBECKY 发表于 2006-12-30 00:27
银牌会员 发帖 442 积分 1,179
不知道能否添加协议,如果能这样就好了,我目前是提示用户手动添加协议的。
第13楼 everest79 发表于 2006-12-30 00:39
金牌会员 发帖 1,127 积分 2,564
无盘我不清楚,在有盘的LAN里,终端或只有一个连接的情况下,可以在正常模式下登录加载安装脚本,脚本主要功能是访问RIS路径来执行inf文件
例如你的netbios,其实你只需要打安装光盘提取ipx的inf及驱动文件就可以了
第14楼 HUNRYBECKY 发表于 2006-12-30 04:02
银牌会员 发帖 442 积分 1,179
Originally posted by everest79 at 2006-12-30 00:39:
无盘我不清楚,在有盘的LAN里,终端或只有一个连接的情况下,可以在正常模式下登录加载安装脚本,脚本主要功能是访问RIS路径来执行inf文件
例如 ...


我自己做的RPL无盘系统,只要把文件解压缩后执行上面的批处理就可以成功启动并登陆到终端系统了,很方便,但是批处理编程过程中有些问题比较难解决,协议可以在正常模式下复制过去,但是协议的添加则需要手动才行,我想改为有批处理完成。还有就是有些RPL启动文件如netui0.dll等在正常模式下是无法复制到系统目录中的,只有在DOS或安全模式下才行,所以产生了判断安全模式的问题。
第15楼 NaturalJ0 发表于 2006-12-30 05:22
银牌会员 发帖 533 积分 1,181
用楼主提到的 GetSystemMetrics 做了个 EXE ,楼主试试,如果能用的话,你就当是第三方工具吧。

附件
SM_CLEANBOOT.zip (1.58 KiB)
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023