Exploring the functions included in Microsoft.BDD.Utility.dll

While browsing through the MDT 2012 scripts, I noticed that here and there MDT uses functions included in the Microsoft.BDD.Utility.dll which is loaded by ZTIUtility.vbs. A good example is the ZTIGather.wsf where the following function is used to determine whether the system is running UEFI or native BIOS.

‘ Determine if we are running UEFI

bIsUEFI = FALSE

On Error Resume Next

bIsUEFI = oUtility.BDDUtility.IsUEFI

On Error Goto 0

So I took Nir Sofer’s DLL Export Viewer to find out what other functions are included in Microsoft.BDD.Utility.dll

image

The below table lists the functions included.

Function

Description

GetErrorMessage

(no references found in scripts(

HiddenPartitionsToDrives

Creates an array of all local partitions, including hidden ones such as the Recovery partition

Is64Bit

‘If the processor is running a x86 OS, then there is *Still* the possibility that it can support a x64 OS. We need to run a quick processor check to see if it supports x64.

IsAdmin

Validate we are running as an administrator

IsHypervisorRunning

Get Virtualization details

IsKnownToDNS

(no references found in scripts and couldn’t
 figure how to call this function)

IsUEFI

Detect whether system uses UEFI or BIOS

KeepAlive

Used in MDT scripts to prevent the system from going into sleep while the task sequence is running.

Supports64Bit

Checks whether system supports 64 Bit

SupportsNX

Checks whether system supports NX

SupportsVT

Checks whether the system supports Virtualization Technology

To make use of these functions outside of the MDT framework, you need the Microsoft.BDD.Utility.dll that is stored under <Deploymentshare>\Tools\x86 or <Deploymentshare>\Tools\x64

Below is a simple wsh script that demonstrates the return values of some of the functions listed above.

‘ utilityfunctions.vbs

 

Set oShell = CreateObject("WScript.Shell")

sBDDUtility = ScriptDir & "\Microsoft.BDD.Utility.dll"

oShell.Run "regsvr32.exe /s """ & sBDDUtility & """", 0, true

Set oBDDUtility = CreateObject("Microsoft.BDD.Utility")

Set BDDUtility = oBDDUtility

 

bIsUEFI = FALSE

bIsUEFI = BDDUtility.IsUEFI

 

bIsAdmin = FALSE

bIsAdmin = BDDUtility.IsAdmin

 

bIsHyperVirsorRunning = FALSE

bIsHyperVirsorRunning = BDDUtility.IsHypervisorRunning

 

bSupportsNX = FALSE

bSupportsNX  = BDDUtility.SupportsNX

 

bSupportsVT = FALSE

bSupportsVT = BDDUtility.SupportsVT

 

bSupports64Bit = FALSE

bSupports64Bit = BDDUtility.Supports64Bit

 

bIs64Bit = FALSE

bIs64Bit = BDDUtility.Is64Bit

 

wscript.echo "UEFI: " & bIsUEFI

wscript.echo "Is Admin: " & bIsAdmin

wscript.echo "Is HyperVisor Running: " & bIsHyperVirsorRunning

wscript.echo "Supports NX: " & bSupportsNX

wscript.echo "Supports VT: " & bSupportsVT

wscript.echo "Supports 64 Bit: " & bSupports64Bit

wscript.echo "Is 64 Bit: " & bIs64Bit

 

Function ScriptDir

 ScriptDir = Left(WScript.ScriptFullName,Len(WScript.ScriptFullName) – Len(WScript.ScriptName) -1)

End Function

 

2 Replies to “Exploring the functions included in Microsoft.BDD.Utility.dll”

Leave a Reply