-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHAL.wsf
executable file
·251 lines (125 loc) · 6.39 KB
/
HAL.wsf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
<job id="HAL">
<script language="VBScript" src="ZTIUtility.vbs"/>
<script language="VBScript">
' //***************************************************************************
' // ***** Script Header *****
' //
' // Purpose: Change HAL
' //
' // Prerequsits: The refrence image must be SP2 or SP3
' //
' // Coretech History:
' // 1.0.0 Michael Petersen 19/09/2008 Created initial version.
' // 2.0.0 Michael Petersen 25/10/2010 Updated to support both MDT 2008 and 2010
' //
' // ***** End Header *****
' //***************************************************************************
'//----------------------------------------------------------------------------
'// Global constant and variable declarations
'//----------------------------------------------------------------------------
Option Explicit
Dim iRetVal, sHalType, sLocalDrive, sHalSource, sSysprep, sfile, sSystem32, sHal, sNtoskrnl, sNkrnlpa, env
Set env = CreateObject("Microsoft.SMS.TSEnvironment")
'//----------------------------------------------------------------------------
'// End declarations
'//----------------------------------------------------------------------------
'//----------------------------------------------------------------------------
'// Main routine
'//----------------------------------------------------------------------------
On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0
'//---------------------------------------------------------------------------
'//
'// Function: ZTIProcess()
'//
'// Input: None
'//
'// Return: Success - 0
'// Failure - non-zero
'//
'// Purpose: Perform main ZTI processing
'//
'//---------------------------------------------------------------------------
Function ZTIProcess()
iRetVal = Success
ZTIProcess = iRetval
' Check for Sysprep.inf and set Path
sSysprep = env("OSDAnswerFilePath")
sLocalDrive = env("OSDisk")
'Check for presence of sysprep.inf
If oFSO.fileExists(sSysprep) then
oLogging.CreateEntry "Found sysprep in " & sSysprep, LogTypeInfo
Else
oLogging.CreateEntry "Could not locate Sysprep", LogTypeWarning
End if
'Set HAL source path from sp2 or sp3
If oFSO.fileExists(sLocalDrive & "\WINDOWS\Driver Cache\i386\sp3.cab") then
sHALsource = sLocalDrive & "\WINDOWS\Driver Cache\i386\sp3.cab"
oLogging.CreateEntry "HAL replasment files will come from: " & sHALsource, LogTypeInfo
elseIf oFSO.fileExists(sLocalDrive & "\WINDOWS\Driver Cache\i386\sp2.cab") then
sHALsource = sLocalDrive & "\WINDOWS\Driver Cache\i386\sp2.cab"
oLogging.CreateEntry "HAL replasment files will come from: " & sHALsource, LogTypeInfo
else
oLogging.CreateEntry "no HAL replasment fileses present", LogTypeInfo
end if
'Get the HAL type from the registry (from Windows PE). This will tell us if we are running on a PIC or an APIC chipset.
oLogging.CreateEntry "Configuring HAL replacement", LogTypeInfo
sHalType = oShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL\0000\HardwareID")
oLogging.CreateEntry "Windows PE is using HAL " & sHalType(0), LogTypeInfo
Select Case lCase(sHalType(0))
Case "acpipic", "acpipic_up"
'Add the UpdateUPHAL command to the Sysprep.inf file.
oUtility.WriteINI "C:\Sysprep\Sysprep.inf", "Unattended", "UpdateUPHAL", "ACPIPIC_UP,C:\windows\Inf\Hal.inf"
oLogging.CreateEntry "Updated SYSPREP.INF to replace HAL with uniprocessor PIC HAL", LogTypeInfo
'Configure HAL and Krnl
sHal = "HALACPI.DLL"
sNtoskrnl = "NTOSKRNL.EXE"
sNkrnlpa = "NTKRNLPA.EXE"
Case "acpiapic", "acpiapic_up"
if oShell.Environment.item("NUMBER_OF_PROCESSORS") > 1 then
'If Processors.Count > 1 Then'Add the UpdateHAL command to the Sysprep.inf file.
oUtility.WriteINI sSysprep, "Unattended", "UpdateHAL", "ACPIAPIC_MP,C:\windows\Inf\Hal.inf"
oLogging.CreateEntry "Updated SYSPREP.INF to replace HAL with multiprocessor APIC HAL", LogTypeInfo
'Configure HAL and Krnl
sHal = "HALMACPI.DLL"
sNtoskrnl = "NTKRNLMP.EXE"
sNkrnlpa = "NTKRPAMP.EXE"
Else
'Add the UpdateUPHAL command to the Sysprep.inf file.
oUtility.WriteINI sSysprep, "Unattended", "UpdateUPHAL", "ACPIAPIC_UP,C:\windows\Inf\Hal.inf"
oLogging.CreateEntry "Updated SYSPREP.INF to replace HAL with uniprocessor APIC HAL", LogTypeInfo
'Configure HAL and Krnl
sHal = "HALAACPI.DLL"
sNtoskrnl = "NTOSKRNL.EXE"
sNkrnlpa = "NTKRNLPA.EXE"
End If
Case "acpiapic_mp"
'Add the UpdateHAL command to the Sysprep.inf file.
oUtility.WriteINI sSysprep, "Unattended", "UpdateHAL", "ACPIAPIC_MP,C:\windows\Inf\Hal.inf"
oLogging.CreateEntry "Updated SYSPREP.INF to replace HAL with multiprocessor APIC HAL", LogTypeInfo
'Configure HAL and Krnl
sHal = "HALMACPI.DLL"
sNtoskrnl = "NTKRNLMP.EXE"
sNkrnlpa = "NTKRPAMP.EXE"
End Select
'Check if System32 is present and unpack needed files.
sSystem32 = sLocalDrive & "\Windows\System32\"
oLogging.CreateEntry "Checking for access to " & sSystem32, LogTypeInfo
If oFSO.FolderExists(sSystem32) then
oLogging.CreateEntry sSystem32 & " Found", LogTypeInfo
For Each sFile in Array(sHal,sNtoskrnl,sNkrnlpa)
oShell.Run "expand " & Chr(34) & sHalSource & Chr(34) & " -f:" &sFile & " " &sSystem32,0,true
oLogging.CreateEntry "Copying " & sFile & " to " & sSystem32, LogTypeInfo
Next
oFSO.CopyFile sSystem32 &sHal, sSystem32 & "HAL.dll", true
oFSO.CopyFile sSystem32 &sNtoskrnl, sSystem32 & "NTOSKRNL.EXE", true
oFSO.CopyFile sSystem32 &sNkrnlpa, sSystem32 & "NTKRNLPA.EXE", true
oLogging.CreateEntry "rename HAL and Kernal files", LogTypeInfo
Else
oLogging.CreateEntry "Error - Folder " & sSystem32 & " Not Found", LogTypeError
End If
End Function
</script>
</job>