zcx880517 发表于 2012-4-19 16:19:51

[已解决]WINPE环境下判断当前计算机操作系统所在分区

本帖最后由 zcx880517 于 2012-4-19 20:53 编辑

RT,在XP或WIN7环境下使用目录宏只能判断当前使用的操作系统所在的分区

在WINPE环境下不显示

请教高手帮忙解决下。

WINPE环境下能判断出双系统或多系统情况甚好!感谢

xyhqqaa 发表于 2012-4-19 16:23:55

帮顶。、坐等高人

user3000 发表于 2012-4-19 16:55:19

回复 1# zcx880517

我认为如果是Windows系统, 读第1个分区下的 Boot.ini 文件肯定没错!

vigiles 发表于 2012-4-19 17:57:35

帮顶,表示关注

fuldho 发表于 2012-4-19 18:46:40

这是一个pe安装前段,看看有没有帮组。

Local $panfu = [ "Z", "Y", "X", "W", "V", "U", "T", "S", "R", "Q", "P", "O", "M", "N", "L", "K", "J", "I", "H", "G", "F", "E", "D", "C"]
For $i = 23 To 0 Step -1;检测是否存在BOOT.INI
        If FileExists($panfu[$i] & ":\BOOT.INI") Then
                $sysdrv = $panfu[$i] & ":"
                ExitLoop
        EndIf
Next

If $sysdrv = "" Then ;不存在BOOT.INI即检测BOOTMGR
        For $i = 23 To 0 Step -1
                If FileExists($panfu[$i] & ":\BOOTMGR") Then
                        $sysdrv = $panfu[$i] & ":"
                        start56x(6)
                        ExitLoop
                EndIf
        Next
EndIf

3mile 发表于 2012-4-19 19:11:45

个人看法:
1、先确定硬盘数量。
2、确定硬盘活动分区
3、读取活动分区硬盘MBR,分析MBR类型。以前做过相关的东西,提供下几种不同引导的字符串特征如下:[["Windows NT 5.x 默认引导程序", "2c4463"],["Windows NT 6.x 默认引导程序", "627a99"],["Grub for Dos", "4d697373696e67204d42522d68656c7065722e"]]
4、参见5楼

veket_linux 发表于 2012-4-19 19:40:59


#include <file.au3>
$arr = DriveGetDrive("FIXED")
$msg_str = ""
For $i = 1 To $arr
        $folder = _FileListToArray($arr[$i] & "\", "win*", 2)
        If @error Then ContinueLoop
        For $j = 1 To $folder
                $kernel_path = $arr[$i] & "\" & $folder[$j] & "\system32\kernel32.dll"
                If FileExists($kernel_path) Then
                        $version = FileGetVersion($kernel_path)
                        $ver = StringLeft($version, 3)
                        Switch $ver
                                Case "5.0"
                                        $msg_str &=$arr[$i] & " ---> Win2000" & @CRLF
                                Case "5.1"
                                        $msg_str &=$arr[$i] & " ---> WinXP" & @CRLF
                                Case "5.2"
                                        $msg_str &=$arr[$i] & " ---> Win2003" & @CRLF
                                Case "6.0"
                                        $msg_str &=$arr[$i] & " ---> Vista" & @CRLF
                                Case "6.1"
                                        $msg_str &=$arr[$i] & " ---> Win7" & @CRLF
                        EndSwitch
                EndIf
        Next
Next
MsgBox(0, "检测结果", $msg_str)

pusofalse 发表于 2012-4-19 20:03:14

楼主兄找个能运行在PE下的系统检测软件,把它反了不就好了吗。

zcx880517 发表于 2012-4-19 20:52:15

回复 8# pusofalse


    P版什么意思呢,,话中有话嘛!

xms77 发表于 2012-4-19 21:21:27

回复 7# veket_linux
很另类的方法,不过如果硬盘上安装了多系统的话,就不是很准确了

sgj584520 发表于 2012-4-20 09:41:04

学习一下,不过这个估计比较复杂

xyhqqaa 发表于 2012-4-20 19:22:38

谢谢楼上的分享。

卫和谐 发表于 2012-4-20 23:19:43

留个记号,暂时用不到!
页: [1]
查看完整版本: [已解决]WINPE环境下判断当前计算机操作系统所在分区