|
想指出一些本帖中提及的关于fbwf的概念:
楼主所说的“添加ewf功能”其实应该说是 “添加fbwf功能”。fbwf 类似于xp embedded的ewf,可以对winpe的光盘进行写操作。但是跟ewf不同,它是基于文件(而不是基于系统)的写过滤驱动器 (File Based Write Filter Driver)。
对于以XP和 2K3造成的winpe而言(Vista例外),fbwf可以有效应用于建基在光盘的winpe,包括iso。但是当应用于建基在硬盘的winpe,包括minint,sdi和img,fbwf将变得无效。
为了实现winpe的更大通用性,我把ramdriv和fbwf都安装上,并在建基在硬盘的winpe加上一个叫SDI.TAG的标签文件。我的 FbwfRamAuto 是这样控制的:
1. 假如没有发现SDI.TAG,就是光盘的winpe,自动分配20%内存作fbwf,5%内存作ramdriv,把环境变量temp和tmp指向X:。
2. 假如发现SDI.TAG,就是硬盘的winpe,自动分配25%内存作ramdriv 不设fbwf,在C盘设128MB的页文件,把环境变量temp和tmp指向C:\temp。
详情如下:
; <AUT2EXE VERSION: 3.2.0.1>
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-START: H:\Program Files\AutoIt3\MyScript\FBWFRamAuto.au3>
; ----------------------------------------------------------------------------
;;get system RAM in KB
$memget = MemGetStats()
;$sysram = round($memget[1] / 1024)
;SplashTextOn(" "," ...auto setting RAM Drive and FBWF... " ,350, 30, -1, -1, 1, "",12,500)
;MsgBox(8192, " Total System Memory "& $sysram & " MB", " Total RAM drive " & ($sysram/20) & " MB", 15)
If Not(FileExists(@ScriptDir & "\SDI.TAG")) Then
$finalram = ($memget[1] / 20 * 1024) ; 5% of System Memory in Bytes for Ram drive !
If $finalram < 2097152 Then
$finalram = 2097152
Else
If $finalram < 8388608 Then
$finalram = 4194304
EndIf
EndIf
$finalfbwf = ($memget[1] / 5 / 1024) ; 20% of System Memory in Mega Bytes for FBWF !
If $finalfbwf < 32 Then
$finalfbwf = 16
EndIf
;;Write auto chosen size to the registry
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ramdriv\Parameters", "DiskSize", "REG_DWORD", $finalram) ;; set ramdisk size
RunWait("devcon.exe disable ramdriv", "", @SW_HIDE);; disable the ramdisk driver
RunWait("devcon.exe enable ramdriv", "", @SW_HIDE);; re-enable the ramdisk driver to accept the new size
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\FBWF", "WinPECacheThreshold", "REG_DWORD", $finalfbwf) ;; set FBWF size
RunWait("sc.exe start fbwf", "", @SW_HIDE) ;; enable FBWF service
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "temp", "REG_EXPAND_SZ", "X:");; set Environment Variable temp
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "tmp", "REG_EXPAND_SZ", "X:");; set Environment Variable tmp
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "ramdrv", "REG_EXPAND_SZ", "B:");; set Environment Variable ramdrv
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "ProfilesDir", "REG_EXPAND_SZ", "X:\Documents And Settings");; set Environment Variable ProfilesDir
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "UserProfile", "REG_EXPAND_SZ", "X:\Documents And Settings\Default User");; set Environment Variable UserProfile
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "USERNAME", "REG_SZ", "Default User");; set Environment Variable USERNAME
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "AppData", "REG_EXPAND_SZ", "X:\Documents And Settings\Default User\Application Data");; set Environment Variable AppData
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "AllUsersProfile", "REG_SZ", "All Users");; set AllUsersProfile
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "DefaultUserProfile", "REG_SZ", "Default User");; set AllUsersProfile
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "ProfilesDirectory", "REG_EXPAND_SZ", "X:\Documents And Settings");; set ProfilesDirectory
Else
$finalram = ($memget[1] / 4 * 1024) ; 25% of System Memory in Bytes for Ram drive !
If $finalram < 2097152 Then
$finalram = 2097152
Else
If $finalram < 8388608 Then
$finalram = 4194304
EndIf
EndIf
;;Write auto chosen size to the registry
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ramdriv\Parameters", "DiskSize", "REG_DWORD", $finalram) ;; set ramdisk size
RunWait("devcon.exe disable ramdriv", "", @SW_HIDE);; disable the ramdisk driver
RunWait("devcon.exe enable ramdriv", "", @SW_HIDE);; re-enable the ramdisk driver to accept the new size
RunWait("SetPageFile.exe c:\pagefile.sys 128", "", @SW_HIDE);;set 128MB pagefile to C:
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "temp", "REG_EXPAND_SZ", "C:\temp");; set Environment Variable temp
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "tmp", "REG_EXPAND_SZ", "C:\temp");; set Environment Variable tmp
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "ramdrv", "REG_EXPAND_SZ", "B:");; set Environment Variable ramdrv
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "ProfilesDir", "REG_EXPAND_SZ", "X:\Documents And Settings");; set Environment Variable ProfilesDir
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "UserProfile", "REG_EXPAND_SZ", "X:\Documents And Settings\Default User");; set Environment Variable UserProfile
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "USERNAME", "REG_SZ", "Default User");; set Environment Variable USERNAME
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "AppData", "REG_EXPAND_SZ", "X:\Documents And Settings\Default User\Application Data");; set Environment Variable AppData
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "AllUsersProfile", "REG_SZ", "All Users");; set AllUsersProfile
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "DefaultUserProfile", "REG_SZ", "Default User");; set AllUsersProfile
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", "ProfilesDirectory", "REG_EXPAND_SZ", "X:\Documents And Settings");; set ProfilesDirectory
EndIf
exit
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-END: H:\Program Files\AutoIt3\MyScript\FBWFRamAuto.au3>
; ---------------------------------------------------------------------------- |
|