标题: [系统相关] 批处理 如何判断当前运行的系统是 WinPE? [打印本页]
作者: yuanyannian 时间: 2012-3-4 18:40 标题: 批处理 如何判断当前运行的系统是 WinPE?
批处理 如何判断当前运行的系统是 WinPE?
判断系统类型:
ver|findstr "5.1 ...
ver|findstr "6.1 ...
如题
用 ver 可以判断硬盘中正在运行的操作系统的版本(XP或win7等),当然可以判断出正在运行的 PE 版本,问题是,如何判断当前运行的系统就是 WinPE 而不是硬盘中的系统呢?
我们只知道,WinPE 是在内存中运行的、一般设定盘符为 X:\ 盘(Ram 盘),但问题是:并非在内存中的都是 PE,也并非有 X:\ 盘(Ram 盘)的就是PE在运行。
要说特定的文件吧,pecmd、peshell ...... ,但也有 explorer 加载的(非 pecmd),其中就没有上述文件。
因此,求助大师们。
先在此感谢了!!!
作者: apang 时间: 2012-3-4 21:05
楼主在wuyou 也发帖了吧?
我说的是判断系统盘是否为X:盘,还有info大元帅在注册表判断minint,貌似都不行,呵呵。。。
作者: broly 时间: 2012-3-5 16:33
PE种类有些多,比较常见的是win2003内核和win7内核的居多,也有Linux内核的。要判断版本,需找到个比较共通的特点再判断
作者: yuanyannian 时间: 2012-3-5 19:04
楼主在wuyou 也发帖了吧?
我说的是判断系统盘是否为X:盘,还有info大元帅在注册表判断minint,貌似都不行 ...
apang 发表于 2012-3-4 21:05
暨 PE种类有些多,比较常见的是win2003内核和win7内核的居多,也有Linux内核的。要判断版本,需找到个比较共通的特点再判断
是的,在 wuyou 也发帖求助了。
“判断 X:盘、注册表的 minint”,通常都是 X:盘,但不是唯一的,minint 我倒不了解。
确实要“要判断版本,需找到个比较共通的特点再判断”才好。
作者: ivor 时间: 2012-3-5 20:23
本帖最后由 ivor 于 2012-3-5 20:25 编辑
1.判断ComSpec的路径,ComSpecPE下X:\驱动器,而正常的情况下是C:\
2.可以调用windows系统中常见的命令,例如PE都不会有net命令吧
作者: yuanyannian 时间: 2012-3-5 20:45
1.判断ComSpec的路径,ComSpecPE下X:\驱动器,而正常的情况下是C:\
2.可以调用windows系统中常见的命令,例如 ...
ivor 发表于 2012-3-5 20:23
判断ComSpec的路径,ComSpecPE下X:\驱动器 是个好办法,请写出判断代码,谢谢!
判断 net 命令?PE开启网络后,也运行 net 的。
作者: powerbat 时间: 2012-3-5 21:26
判断PE有何目的?
作者: yuanyannian 时间: 2012-3-5 21:31
制作PE安装工具---对当前运行系统的判断。
作者: terse 时间: 2012-3-5 23:11
可用的 系统变量 太多了 为何不试系统变量呢
作者: find 时间: 2012-3-5 23:46
在Windows和PE里面分别运行一下set命令,看看系统环境变量有没有合适的。
作者: yuanyannian 时间: 2012-3-6 20:03
本帖最后由 yuanyannian 于 2012-3-6 20:07 编辑
回复 10# find
判断 %comSpec% 与判断 X: 盘一样;PE的注册表不是统一的,其系统变量的名称也不是统一的,即便是有别于系统,通用性也不强。
附上一段代码---摘自“小马Win7PE安装工具”- @echo off
-
- rem ......
-
- :checkos
- ver|find /i " 6.1">nul &&set winver=win7&& set theos=win7
- ver|find /i " 6.0">nul &&set winver=vista&& set theos=vista
- ver|find /i " 5.1">nul &&set winver=winnt&& set theos=xp
- ver|find /i " 5.2">nul &&set winver=winnt&& set theos=2003
复制代码
::假如,这样:- if /i "%theos%"="xp" (
- if /i exist "x:\" (
- echo The os is Windows XP PE.) else echo The os is Windows XP.
- )
复制代码
其中 if /i exist "x:\" 便是问题的焦点。
作者: yuanyannian 时间: 2012-3-6 20:12
本帖最后由 yuanyannian 于 2012-3-6 20:43 编辑
回复 11# yuanyannian
盘龙城城主--info大元帅的判断 /minint 似乎是好办法。- set wp=reg query HKLM\SYSTEM\CurrentControlSet\Control /v SystemStartOptions
- %wp%|find "MININT"&&(echo WinPE)
复制代码
系统(或PE)启动加载后,对应于“SystemBootDevice”的不同(系统所在位置---如 multi(0)disk(0)rdisk(0)partition(1) 或 Ramdisk(0)),“SystemStartOptions”的值也不同(如 NOEXECUTE=OPTIN FASTDETECT ...;minint ...),简单来讲就是(可能?)在实机中运行的系统与内存中运行的系统其“SystemStartOptions”的值是不同的,后者便是 MININT ...,本人只是查看了实机和PE下XP、Win7中的“SystemStartOptions”的值来说的,究竟是不是具有“普遍性”,还请大师们定夺啦!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |