diff --git a/CopyFilesToVM.ps1 b/CopyFilesToVM.ps1
index 6585e0c..b24df3a 100644
--- a/CopyFilesToVM.ps1
+++ b/CopyFilesToVM.ps1
@@ -1,5 +1,5 @@
 $params = @{
-    VMName = "GPUP"
+    VMName = "GPUPV"
     SourcePath = "C:\Users\james\Downloads\Win11_English_x64.iso"
     Edition    = 6
     VhdFormat  = "VHDX"
@@ -7,6 +7,8 @@
     SizeBytes  = 40GB
     MemoryAmount = 8GB
     CPUCores = 4
+    NetworkSwitch = "Default Switch"
+    VHDPath = "C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\"
     UnattendPath = "$PSScriptRoot"+"\autounattend.xml"
     GPUName = "AUTO"
     GPUResourceAllocationPercentage = 50
@@ -25,6 +27,56 @@ function Is-Administrator
     (New-Object Security.Principal.WindowsPrincipal $CurrentUser).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)  
 }
 
+Function Dismount-ISO {
+param (
+[string]$SourcePath
+)
+$disk = Get-Volume | Where-Object {$_.DriveType -eq "CD-ROM"} | select *
+Foreach ($d in $disk) {
+    Dismount-DiskImage -ImagePath $sourcePath | Out-Null
+    }
+}
+
+Function Mount-ISOReliable {
+param (
+[string]$SourcePath
+)
+$mountResult = Mount-DiskImage -ImagePath $SourcePath
+$delay = 0
+Do {
+    if ($delay -gt 15) {
+        Function Get-NewDriveLetter {
+            $UsedDriveLetters = ((Get-Volume).DriveLetter) -join ""
+             Do {
+                $DriveLetter = (65..90)| Get-Random | % {[char]$_}
+                }
+            Until (!$UsedDriveLetters.Contains("$DriveLetter"))
+            $DriveLetter
+            }
+        $DriveLetter = "$(Get-NewDriveLetter)" +  ":"
+        Get-WmiObject -Class Win32_volume | Where-Object {$_.Label -eq "CCCOMA_X64FRE_EN-US_DV9"} | Set-WmiInstance -Arguments @{DriveLetter="$driveletter"}
+        }
+    Start-Sleep -s 1 
+    $delay++
+    }
+Until (($mountResult | Get-Volume).DriveLetter -ne $NULL)
+($mountResult | Get-Volume).DriveLetter
+}
+
+
+Function ConcatenateVHDPath {
+param(
+[string]$VHDPath,
+[string]$VMName
+)
+if ($VHDPath[-1] -eq '\') {
+    $VHDPath + $VMName + ".vhdx"
+    }
+Else {
+    $VHDPath + "\" +  $VMName + ".vhdx"
+    }
+}
+
 Function SmartExit {
 param (
 [switch]$NoHalt,
@@ -51,12 +103,25 @@ Function Check-Params {
 
 $ExitReason = @()
 
+if ([ENVIRONMENT]::Is64BitProcess -eq $false) {
+    $ExitReason += "You are not using the correct version of Powershell, do not use Powershell(x86)."
+    }
 if ((Is-Administrator) -eq $false) {
     $ExitReason += "Script not running as Administrator, please run script as Administrator."
     }
+if (!(Test-Path $params.VHDPath)) {
+    $ExitReason += "VHDPath Directory doesn't exist, please create it before running this script."
+    }
 if (!(test-path $params.SourcePath)) {
     $ExitReason += "ISO Path Invalid. Please enter a valid ISO Path in the SourcePath section of Params."
     }
+else {
+    $ISODriveLetter = Mount-ISOReliable -SourcePath $params.SourcePath
+    if (!(Test-Path $("$ISODriveLetter"+":\Sources\install.wim"))) {
+        $ExitReason += "This ISO is invalid, please check readme for ISO downloading instructions."
+        }
+    Dismount-ISO -SourcePath $params.SourcePath 
+    }
 if ($params.Username -eq $params.VMName ) {
     $ExitReason += "Username cannot be the same as VMName."
     }
@@ -90,7 +155,7 @@ param(
 
     foreach ($line in $content) {
         if ($line -like "0Parameters="){
-            $line = "0Parameters=-team_id=$Team_ID -team_key=$Key"
+            $line = "0Parameters=$Team_ID $Key"
             $new += $line
             }
         Else {
@@ -103,6 +168,11 @@ param(
     if((Test-Path -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Startup) -eq $true) {} Else {New-Item -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Startup -ItemType directory | Out-Null}
     if((Test-Path -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown) -eq $true) {} Else {New-Item -Path $DriveLetter\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown -ItemType directory | Out-Null}
     if((Test-Path -Path $DriveLetter\ProgramData\Easy-GPU-P) -eq $true) {} Else {New-Item -Path $DriveLetter\ProgramData\Easy-GPU-P -ItemType directory | Out-Null}
+    Copy-Item -Path $psscriptroot\VMScripts\VDDMonitor.ps1 -Destination $DriveLetter\ProgramData\Easy-GPU-P
+    Copy-Item -Path $psscriptroot\VMScripts\VBCableInstall.ps1 -Destination $DriveLetter\ProgramData\Easy-GPU-P
+    Copy-Item -Path $psscriptroot\VMScripts\ParsecVDDInstall.ps1 -Destination $DriveLetter\ProgramData\Easy-GPU-P
+    Copy-Item -Path $psscriptroot\VMScripts\ParsecPublic.cer -Destination $DriveLetter\ProgramData\Easy-GPU-P
+    Copy-Item -Path $psscriptroot\VMScripts\Parsec.lnk -Destination $DriveLetter\ProgramData\Easy-GPU-P
     Copy-Item -Path $psscriptroot\gpt.ini -Destination $DriveLetter\Windows\system32\GroupPolicy
     Copy-Item -Path $psscriptroot\User\psscripts.ini -Destination $DriveLetter\Windows\system32\GroupPolicy\User\Scripts
     Copy-Item -Path $psscriptroot\User\Install.ps1 -Destination $DriveLetter\Windows\system32\GroupPolicy\User\Scripts\Logon
@@ -292,6 +362,12 @@ function Convert-WindowsImage {
         [ValidateScript({ Test-Path $(Resolve-Path $_) })]
         $SourcePath,
 
+        [Parameter(ParameterSetName="SRC")]
+        [Alias("DriveLetter")]
+        [string]
+        [ValidateNotNullOrEmpty()]
+        [string]$ISODriveLetter,
+
         [Parameter(ParameterSetName="SRC")]
         [Alias("GPU")]
         [string]
@@ -1239,12 +1315,6 @@ You can use the fields below to configure the VHD or VHDX that you want to creat
                             $txtSourcePath.Text = $isoPath = (Resolve-Path $openFileDialog1.FileName).Path
                             Write-W2VInfo "Opening ISO $(Split-Path $isoPath -Leaf)..."
 
-                            $openIso     = Mount-DiskImage -ImagePath $isoPath -StorageType ISO -PassThru
-
-                            # Refresh the DiskImage object so we can get the real information about it.  I assume this is a bug.
-                            $openIso     = Get-DiskImage -ImagePath $isoPath
-                            $driveLetter = ($openIso | Get-Volume).DriveLetter
-
                             $script:SourcePath  = "$($driveLetter):\sources\install.wim"
 
                             # Check to see if there's a WIM file we can muck about with.
@@ -1886,22 +1956,23 @@ You can use the fields below to configure the VHD or VHDX that you want to creat
                 # or about network latency.
                 if (Test-IsNetworkLocation $SourcePath)
                 {
-                    Write-W2VInfo "Copying ISO $(Split-Path $SourcePath -Leaf) to temp folder..."
-                    robocopy $(Split-Path $SourcePath -Parent) $TempDirectory $(Split-Path $SourcePath -Leaf) | Out-Null
-                    $SourcePath = "$($TempDirectory)\$(Split-Path $SourcePath -Leaf)"
-
-                    $tempSource = $SourcePath
+                    Write-W2VError "ISO Path cannot be network location"
+                    #Write-W2VInfo "Copying ISO $(Split-Path $SourcePath -Leaf) to temp folder..."
+                    #robocopy $(Split-Path $SourcePath -Parent) $TempDirectory $(Split-Path $SourcePath -Leaf) | Out-Null
+                    #$SourcePath = "$($TempDirectory)\$(Split-Path $SourcePath -Leaf)"
+                    #$tempSource = $SourcePath
                 }
 
                 $isoPath = (Resolve-Path $SourcePath).Path
 
                 Write-W2VInfo "Opening ISO $(Split-Path $isoPath -Leaf)..."
+                <#
                 $openIso     = Mount-DiskImage -ImagePath $isoPath -StorageType ISO -PassThru
                 # Refresh the DiskImage object so we can get the real information about it.  I assume this is a bug.
                 $openIso     = Get-DiskImage -ImagePath $isoPath
                 $driveLetter = ($openIso | Get-Volume).DriveLetter
-
-                $SourcePath  = "$($driveLetter):\sources\install.wim"
+                #>
+                $SourcePath  = "$($DriveLetter):\sources\install.wim"
 
                 # Check to see if there's a WIM file we can muck about with.
                 Write-W2VInfo "Looking for $($SourcePath)..."
@@ -1928,7 +1999,7 @@ You can use the fields below to configure the VHD or VHDX that you want to creat
             ####################################################################################################
 
             Write-W2VInfo "Looking for the requested Windows image in the WIM file"
-            $WindowsImage = Get-WindowsImage -ImagePath $SourcePath
+            $WindowsImage = Get-WindowsImage -ImagePath "$($driveLetter):\sources\install.wim"
 
             if (-not $WindowsImage -or ($WindowsImage -is [System.Array]))
             {
@@ -2551,6 +2622,7 @@ You can use the fields below to configure the VHD or VHDX that you want to creat
             }
 
             # Close out the transcript and tell the user we're done.
+            Dismount-ISO -SourcePath $ISOPath
             Write-W2VInfo "Done."
             if ($transcripting)
             {
@@ -4256,10 +4328,10 @@ param(
 
     [float]$devider = [math]::round($(100 / $GPUResourceAllocationPercentage),2)
 
-    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionVRAM 0 -MaxPartitionVRAM 1000000000 -OptimalPartitionVRAM ([math]::round($(1000000000 / $devider)))
-    Set-VMGPUPartitionAdapter -VMName $VMName -MinPartitionEncode 0 -MaxPartitionEncode 18446744073709551615 -OptimalPartitionEncode ([math]::round($(18446744073709551615 / $devider)))
-    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionDecode 0 -MaxPartitionDecode 1000000000 -OptimalPartitionDecode ([math]::round($(1000000000 / $devider)))
-    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionCompute 0 -MaxPartitionCompute 1000000000 -OptimalPartitionCompute ([math]::round($(1000000000 / $devider)))
+    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionVRAM ([math]::round($(1000000000 / $devider))) -MaxPartitionVRAM ([math]::round($(1000000000 / $devider))) -OptimalPartitionVRAM ([math]::round($(1000000000 / $devider)))
+    Set-VMGPUPartitionAdapter -VMName $VMName -MinPartitionEncode ([math]::round($(18446744073709551615 / $devider))) -MaxPartitionEncode ([math]::round($(18446744073709551615 / $devider))) -OptimalPartitionEncode ([math]::round($(18446744073709551615 / $devider)))
+    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionDecode ([math]::round($(1000000000 / $devider))) -MaxPartitionDecode ([math]::round($(1000000000 / $devider))) -OptimalPartitionDecode ([math]::round($(1000000000 / $devider)))
+    Set-VMGpuPartitionAdapter -VMName $VMName -MinPartitionCompute ([math]::round($(1000000000 / $devider))) -MaxPartitionCompute ([math]::round($(1000000000 / $devider))) -OptimalPartitionCompute ([math]::round($(1000000000 / $devider)))
 
 }
 
@@ -4268,12 +4340,13 @@ param(
 [int64]$SizeBytes,
 [int]$Edition,
 [string]$VhdFormat,
-[string]$VhdPath = "C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\$($VMName).vhdx",
+[string]$VhdPath,
 [string]$VMName,
 [string]$DiskLayout,
 [string]$UnattendPath,
 [int64]$MemoryAmount,
 [int]$CPUCores,
+[string]$NetworkSwitch,
 [string]$GPUName,
 [float]$GPUResourceAllocationPercentage,
 [string]$SourcePath,
@@ -4283,7 +4356,9 @@ param(
 [string]$password,
 [string]$autologon
 )
-    
+    $VHDPath = ConcatenateVHDPath -VHDPath $VHDPath -VMName $VMName
+    $DriveLetter = Mount-ISOReliable -SourcePath $SourcePath
+
     if ($(Get-VM -Name $VMName -ErrorAction SilentlyContinue) -ne $NULL) {
         SmartExit -ExitReason "Virtual Machine already exists with name $VMName, please delete existing VM or change VMName"
         }
@@ -4292,9 +4367,9 @@ param(
         }
     Modify-AutoUnattend -username "$username" -password "$password" -autologon $autologon -hostname $VMName -UnattendPath $UnattendPath
     $MaxAvailableVersion = (Get-VMHostSupportedVersion).Version | Where-Object {$_.Major -lt 254}| Select-Object -Last 1 
-    Convert-WindowsImage -SourcePath $SourcePath -Edition $Edition -VHDFormat $Vhdformat -VHDPath $VhdPath -DiskLayout $DiskLayout -UnattendPath $UnattendPath -GPUName $GPUName -Team_ID $Team_ID -Key $Key -SizeBytes $SizeBytes| Out-Null
+    Convert-WindowsImage -SourcePath $SourcePath -ISODriveLetter $DriveLetter -Edition $Edition -VHDFormat $Vhdformat -VHDPath $VhdPath -DiskLayout $DiskLayout -UnattendPath $UnattendPath -GPUName $GPUName -Team_ID $Team_ID -Key $Key -SizeBytes $SizeBytes| Out-Null
     if (Test-Path $vhdPath) {
-        New-VM -Name $VMName -MemoryStartupBytes $MemoryAmount -VHDPath $VhdPath -Generation 2 -SwitchName "Default Switch" -Version $MaxAvailableVersion | Out-Null
+        New-VM -Name $VMName -MemoryStartupBytes $MemoryAmount -VHDPath $VhdPath -Generation 2 -SwitchName $NetworkSwitch -Version $MaxAvailableVersion | Out-Null
         Set-VM -Name $VMName -ProcessorCount $CPUCores -CheckpointType Disabled -LowMemoryMappedIoSpace 3GB -HighMemoryMappedIoSpace 32GB -GuestControlledCacheTypes $true -AutomaticStopAction ShutDown
         Set-VMMemory -VMName $VMName -DynamicMemoryEnabled $false 
         $CPUManufacturer = Get-CimInstance -ClassName Win32_Processor | Foreach-Object Manufacturer
@@ -4305,6 +4380,7 @@ param(
             Set-VMProcessor -VMName $VMName -ExposeVirtualizationExtensions $true
             }
         Set-VMHost -ComputerName $ENV:Computername -EnableEnhancedSessionMode $false
+        Set-VMVideo -VMName $VMName -HorizontalResolution 1920 -VerticalResolution 1080
         Set-VMKeyProtector -VMName $VMName -NewLocalKeyProtector
         Enable-VMTPM -VMName $VMName 
         Add-VMDvdDrive -VMName $VMName -Path $SourcePath
@@ -4314,7 +4390,6 @@ param(
         }
     else {
     SmartExit -ExitReason "Failed to create VHDX, stopping script"
-
     }
 }
 
@@ -4324,6 +4399,9 @@ New-GPUEnabledVM @params
 
 Start-VM -Name $params.VMName
 
-SmartExit -ExitReason "If all went well the Virtual Machine will have started - 
-you need to accept two certificate install dialogs inside the VM to install a 
-virtual display and virtual audio cable via the Hyper-V viewer then sign into Parsec and connect via Parsec"
+SmartExit -ExitReason "If all went well the Virtual Machine will have started, 
+In a few minutes it will load the Windows desktop, 
+when it does, sign into Parsec (a fast remote desktop app)
+and connect to the machine using Parsec from another computer. 
+Have fun!
+Sign up to Parsec at https://parsec.app"
diff --git a/PreChecks.ps1 b/PreChecks.ps1
index ce8afab..fe8a611 100644
--- a/PreChecks.ps1
+++ b/PreChecks.ps1
@@ -15,7 +15,7 @@ Function Get-DesktopPC
 
 Function Get-WindowsCompatibleOS {
 $build = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
-if ($build.CurrentBuild -ge 19041 -and ($($build.editionid -like 'Professional*') -or $($build.editionid -like 'Enterprise*'))) {
+if ($build.CurrentBuild -ge 19041 -and ($($build.editionid -like 'Professional*') -or $($build.editionid -like 'Enterprise*') -or $($build.editionid -like 'Education*'))) {
     Return $true
     }
 Else {
diff --git a/README.md b/README.md
index aefe752..5bb9f9a 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,18 @@
-# Easy-GPU-P
-A work-in-progress project dedicated to making GPU Partitioning on Windows Hyper-V easier! Also known as GPU Paravirtualization (GPU-PV).  
+# Easy-GPU-PV
+A work-in-progress project dedicated to making GPU Paravirtualization on Windows Hyper-V easier!  
 
-GPU-P allows you to partition your systems dedicated or integrated GPU and assign it to several Hyper-V VMs.  It's the same technology that is used in WSL2, and Windows Sandbox.  
+GPU-PV allows you to partition your systems dedicated or integrated GPU and assign it to several Hyper-V VMs.  It's the same technology that is used in WSL2, and Windows Sandbox.  
 
-Easy-GPU-P aims to make this easier by automating the steps required to get a GPU-P VM up and running.  
-Easy-GPU-P does the following...  
+Easy-GPU-PV aims to make this easier by automating the steps required to get a GPU-PV VM up and running.  
+Easy-GPU-PV does the following...  
 1) Creates a VM of your choosing
-2) Automatically Installs Windows 11 to the VM
+2) Automatically Installs Windows to the VM
 3) Partitions your GPU of choice and copies the required driver files to the VM  
-4) Installs [Parsec](https://parsec.app) to the VM, you can use Parsec for free non commercially. To use Parsec commercially, sign up to a [Parsec For Teams](https://parsec.app/teams) account  
+4) Installs [Parsec](https://parsec.app) to the VM, Parsec is an ultra low latency remote desktop app, use this to connect to the VM.  You can use Parsec for free non commercially. To use Parsec commercially, sign up to a [Parsec For Teams](https://parsec.app/teams) account  
 
 ### Prerequisites:
-* Windows 10 20H1+ Pro or Enterprise  or Windows 11 Pro or Enterprise.  
+* Windows 10 20H1+ Pro, Enterprise or Education OR Windows 11 Pro, Enterprise or Education.  Windows 11 on host and VM is preferred due to better compatibility.  
+* Matched Windows versions between the host and VM. Mismatches may cause compatibility issues, blue-screens, or other issues. (Win10 21H1 + Win10 21H1, or Win11 21H2 + Win11 21H2, for example)  
 * Desktop Computer with dedicated NVIDIA/AMD GPU or Integrated Intel GPU - Laptops with NVIDIA GPUs are not supported at this time, but Intel integrated GPUs work on laptops.  GPU must support hardware video encoding (NVIDIA NVENC, Intel Quicksync or AMD AMF).  
 * Latest GPU driver from Intel.com or NVIDIA.com, don't rely on Device manager or Windows update.  
 * Latest Windows 10 ISO [downloaded from here](https://www.microsoft.com/en-gb/software-download/windows10ISO) / Windows 11 ISO [downloaded from here.](https://www.microsoft.com/en-us/software-download/windows11) - Do not use Media Creation Tool, if no direct ISO link is available, follow [this guide.](https://www.nextofwindows.com/downloading-windows-10-iso-images-using-rufus)
@@ -19,22 +20,21 @@ Easy-GPU-P does the following...
 * Allow Powershell scripts to run on your system - typically by running "Set-ExecutionPolicy unrestricted" in Powershell running as Administrator.  
 
 ### Instructions
-1. Make sure your system meets the prerequisits.
-2. [Download the Repo and extract.](https://github.com/jamesstringerparsec/Easy-GPU-P/archive/refs/heads/main.zip)
+1. Make sure your system meets the prerequisites.
+2. [Download the Repo and extract.](https://github.com/jamesstringerparsec/Easy-GPU-PV/archive/refs/heads/main.zip)
 3. Search your system for Powershell ISE and run as Administrator.
-4. In the extracted folder you downloaded, open PreChecks.ps1 in Powershell ISE.
+4. In the extracted folder you downloaded, open PreChecks.ps1 in Powershell ISE.  Run the files from within the extracted folder. Do not move them.
 5. Open and Run PreChecks.ps1 in Powershell ISE using the green play button and copy the GPU Listed (or the warnings that you need to fix).
-6. Open CopyFilesToVM.ps1 and edit the params section at the top of the file, you need to be careful about how much ram, storage and hard drive you give it as you system needs to have that available.  On Windows 10 the GPUName must be left as "AUTO", In Windows 11 it can be either "AUTO" or the specific name of the GPU you want to partition exactly how it appears in PreChecks.ps1.  Additionally, you need to provide the path to the Windows 10/11 ISO file you downloaded.
+6. Open CopyFilesToVM.ps1 Powershell ISE and edit the params section at the top of the file, you need to be careful about how much ram, storage and hard drive you give it as your system needs to have that available.  On Windows 10 the GPUName must be left as "AUTO", In Windows 11 it can be either "AUTO" or the specific name of the GPU you want to partition exactly how it appears in PreChecks.ps1.  Additionally, you need to provide the path to the Windows 10/11 ISO file you downloaded.
 7. Run CopyFilesToVM.ps1 with your changes to the params section - this may take 5-10 minutes.
-8. View the VM in Hyper-V, once it gets to the Windows Desktop you will need to approve the certificate install request for Parsec and Virtual Audio Cable.
-9. Sign into Parsec on the VM.
-10. You should be good to go!
+8. Open and sign into Parsec on the VM.  You can use Parsec to connect to the VM up to 4K60FPS.
+9. You should be good to go!
 
 ### Upgrading GPU Drivers when you update the host GPU Drivers
 It's important to update the VM GPU Drivers after you have updated the Host GPUs drivers. You can do this by...  
 1. Reboot the host after updating GPU Drivers.  
-2. Open Powershell as administrator and change directory (CD) to the path that CopyFilestoVM.ps1 and Update-VMGPUPartitonDriver.ps1 are located. 
-3. Run ```Update-VMGPUPartitonDriver.ps1 -VMName "Name of your VM" -GPUName "Name of your GPU"```    (Windows 10 GPU name must be "AUTO")
+2. Open Powershell as administrator and change directory (CD) to the path that CopyFilesToVM.ps1 and Update-VMGpuPartitionDriver.ps1 are located. 
+3. Run ```Update-VMGpuPartitionDriver.ps1 -VMName "Name of your VM" -GPUName "Name of your GPU"```    (Windows 10 GPU name must be "AUTO")
 
 ### Values
   ```VMName = "GPUP"``` - Name of VM in Hyper-V and the computername / hostname  
@@ -42,16 +42,18 @@ It's important to update the VM GPU Drivers after you have updated the Host GPUs
   ```Edition    = 6``` - Leave as 6, this means Windows 10/11 Pro  
   ```VhdFormat  = "VHDX"``` - Leave this value alone  
   ```DiskLayout = "UEFI"``` - Leave this value alone  
-  ```SizeBytes  = 40gb``` - Disk size, in this case 40GB  
+  ```SizeBytes  = 40gb``` - Disk size, in this case 40GB, the minimum is 20GB  
   ```MemoryAmount = 8GB``` - Memory size, in this case 8GB  
   ```CPUCores = 4``` - CPU Cores you want to give VM, in this case 4   
+  ```NetworkSwitch = "Default Switch"``` - Leave this alone unless you're not using the default Hyper-V Switch  
+  ```VHDPath = "C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\"``` - Path to the folder you want the VM Disk to be stored in, it must already exist  
   ```UnattendPath = "$PSScriptRoot"+"\autounattend.xml"``` -Leave this value alone  
   ```GPUName = "AUTO"``` - AUTO selects the first available GPU. On Windows 11 you may also use the exact name of the GPU you want to share with the VM in multi GPU situations (GPU selection is not available in Windows 10 and must be set to AUTO)    
   ```GPUResourceAllocationPercentage = 50``` - Percentage of the GPU you want to share with the VM   
   ```Team_ID = ""``` - The Parsec for Teams ID if you are a Parsec for Teams Subscriber  
   ```Key = ""``` - The Parsec for Teams Secret Key if you are a Parsec for Teams Subscriber  
   ```Username = "GPUVM"``` - The VM Windows Username, do not include special characters, and must be different from the "VMName" value you set  
-  ```Password = "CoolestPassword!"``` - The VM Windows Password  
+  ```Password = "CoolestPassword!"``` - The VM Windows Password, cannot be blank    
   ```Autologon = "true"```- If you want the VM to automatically login to the Windows Desktop
 
 
@@ -61,8 +63,13 @@ It's important to update the VM GPU Drivers after you have updated the Host GPUs
 
 
 ### Notes:    
-- Windows 10 20H1 is not well tested as I don't have any Win10 20H1 installs, if you have success on Windows 10 20H1 - 21H2 please let me know.
-- A powered on display / HDMI dummy dongle must be plugged into the GPU to allow Parsec to capture the screen.  You only only need one of these per host machine regardless of number of VM's.
-- The screen may go black for times up to 10 seconds in sitautions when UAC prompts appear, applications go in and out of fullscreen and when you switch between video codecs in Parsec - not really sure why this happens, it's unique to GPU-P machines and seems to recover faster at 1280x720.
+- After you have signed into Parsec on the VM, always use Parsec to connect to the VM.  Keep the Microsft Hyper-V Video adapter disabled. Using RDP and Hyper-V Enhanced Session mode will result in broken behaviour and black screens in Parsec.  RDP and the Hyper-V video adapter only offer a maximum of 30FPS. Using Parsec will allow you to use up to 4k60 FPS.
+- If you get "ERROR  : Cannot bind argument to parameter 'Path' because it is null." this probably means you used Media Creation Tool to download the ISO.  You unfortunately cannot use that, if you don't see a direct ISO download link at the Microsoft page, follow [this guide.](https://www.nextofwindows.com/downloading-windows-10-iso-images-using-rufus)  
+- Your GPU on the host will have a Microsoft driver in device manager, rather than an nvidia/intel/amd driver. As long as it doesn't have a yellow triangle over top of the device in device manager, it's working correctly.  
+- A powered on display / HDMI dummy dongle must be plugged into the GPU to allow Parsec to capture the screen.  You only need one of these per host machine regardless of number of VM's.
+- If your computer is super fast it may get to the login screen before the audio driver (VB Cable) and Parsec display driver are installed, but fear not! They should soon install.  
+- The screen may go black for times up to 10 seconds in situations when UAC prompts appear, applications go in and out of fullscreen and when you switch between video codecs in Parsec - not really sure why this happens, it's unique to GPU-P machines and seems to recover faster at 1280x720.
 - Vulkan renderer is unavailable and GL games may or may not work.  [This](https://www.microsoft.com/en-us/p/opencl-and-opengl-compatibility-pack/9nqpsl29bfff?SilentAuth=1&wa=wsignin1.0#activetab=pivot:overviewtab) may help with some OpenGL apps.  
-- If you boot your VM up for the first time and you are unable to press Yes to the UAC prompts for Parsec Virtual Display Driver / Virtual Audio cable it means that you used either special characters in the username you set or the username you set is the same as the VM name.  Please recreate the VM making sure not to use the same username as the VM name and be sure not to include special characters.  
+- If you do not have administrator permissions on the machine it means you set the username and vmname to the same thing, these needs to be different.  
+- AMD Polaris GPUS like the RX 580 do not support hardware video encoding via GPU Paravirtualization at this time.  
+- To download Windows ISOs with Rufus, it must have "Check for updates" enabled.
diff --git a/User/Install.ps1 b/User/Install.ps1
index dc861d2..bdc007f 100644
--- a/User/Install.ps1
+++ b/User/Install.ps1
@@ -7,62 +7,206 @@ while(!(Test-NetConnection Google.com).PingSucceeded){
     Start-Sleep -Seconds 1
     }
 
+Get-ChildItem -Path C:\ProgramData\Easy-GPU-P -Recurse | Unblock-File
+
 if (Test-Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Parsec) 
     {}
     else {
     (New-Object System.Net.WebClient).DownloadFile("https://builds.parsecgaming.com/package/parsec-windows.exe", "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe")
-    (New-Object System.Net.WebClient).DownloadFile("https://builds.parsec.app/vdd/parsec-vdd-0.37.0.0.exe", "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe")
-    (New-Object System.Net.WebClient).DownloadFile("https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack43.zip", "C:\Users\$env:USERNAME\Downloads\VBCable.zip")
-    $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
-    $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) | Out-File C:\ProgramData\Easy-GPU-P\admim.txt
     Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-windows.exe" -ArgumentList "/silent", "/shared","/team_id=$team_id","/team_computer_key=$key" -wait
+    While (!(Test-Path C:\ProgramData\Parsec\config.txt)){
+        Start-Sleep -s 1
+        }
     $configfile = Get-Content C:\ProgramData\Parsec\config.txt
     $configfile += "host_virtual_monitors = 1"
     $configfile += "host_privacy_mode = 1"
     $configfile | Out-File C:\ProgramData\Parsec\config.txt -Encoding ascii
+    Copy-Item -Path "C:\ProgramData\Easy-GPU-P\Parsec.lnk" -Destination "C:\Users\Public\Desktop"
+    Stop-Process parsecd -Force
     }
 
-<#
-    if (!((Get-ChildItem -Path Cert:\CurrentUser\TrustedPublisher).DnsNameList.Unicode -like "Parsec Cloud, Inc.")) {
-    cmd /c C:\ProgramFiles\Easy-GPU-P\cert.bat
-    }
-
-    Invoke-Item Cert:\CurrentUser\TrustedPublisher
-    start-sleep -s 30
-
+Function ParsecVDDMonitorSetupScheduledTask {
+$XML = @"
+<?xml version="1.0" encoding="UTF-16"?>
+<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
+  <RegistrationInfo>
+    <Description>Monitors the state of Parsec Virtual Display and repairs if broken</Description>
+    <URI>\Monitor Parsec VDD State</URI>
+  </RegistrationInfo>
+  <Triggers>
+    <LogonTrigger>
+      <Enabled>true</Enabled>
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)</UserId>
+      <Delay>PT2M</Delay>
+    </LogonTrigger>
+  </Triggers>
+  <Principals>
+    <Principal id="Author">
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)</UserId>
+      <LogonType>S4U</LogonType>
+      <RunLevel>HighestAvailable</RunLevel>
+    </Principal>
+  </Principals>
+  <Settings>
+    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
+    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
+    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
+    <AllowHardTerminate>true</AllowHardTerminate>
+    <StartWhenAvailable>false</StartWhenAvailable>
+    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
+    <IdleSettings>
+      <StopOnIdleEnd>true</StopOnIdleEnd>
+      <RestartOnIdle>false</RestartOnIdle>
+    </IdleSettings>
+    <AllowStartOnDemand>true</AllowStartOnDemand>
+    <Enabled>true</Enabled>
+    <Hidden>false</Hidden>
+    <RunOnlyIfIdle>false</RunOnlyIfIdle>
+    <WakeToRun>false</WakeToRun>
+    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
+    <Priority>7</Priority>
+  </Settings>
+  <Actions Context="Author">
+    <Exec>
+      <Command>C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe</Command>
+      <Arguments>-file %programdata%\Easy-GPU-P\VDDMonitor.ps1</Arguments>
+    </Exec>
+  </Actions>
+</Task>
+"@
 
-if (!((Get-ChildItem -Path Cert:\CurrentUser\TrustedPublisher).DnsNameList.Unicode -like "Parsec Cloud, Inc.")) {
-    Import-Certificate -CertStoreLocation Cert:\CurrentUser\TrustedPublisher -FilePath C:\ProgramData\Easy-GPU-P\parsecpublic.cer
-if (!(Test-Path C:\ProgramData\Easy-GPU-P\second.txt)) {
-    New-Item -ItemType File -Path C:\ProgramData\Easy-GPU-P\second.txt
-    Restart-Computer
+    try {
+        Get-ScheduledTask -TaskName "Monitor Parsec VDD State" -ErrorAction Stop | Out-Null
+        Unregister-ScheduledTask -TaskName "Monitor Parsec VDD State" -Confirm:$false
+        }
+    catch {}
+    $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\VDDMonitor.ps1'
+    $trigger =  New-ScheduledTaskTrigger -AtStartup
+    Register-ScheduledTask -XML $XML -TaskName "Monitor Parsec VDD State" | Out-Null
     }
-}
-#>
-if (!(Get-WmiObject Win32_VideoController | Where-Object name -like "VB-Audio Virtual Cable")) {
-    New-Item -Path "C:\Users\$env:Username\Downloads\VBCable" -ItemType Directory| Out-Null
-    Expand-Archive -Path "C:\Users\$env:USERNAME\Downloads\VBCable.zip" -DestinationPath "C:\Users\$env:USERNAME\Downloads\VBCable"
-    $pathToCatFile = "C:\Users\$env:USERNAME\Downloads\VBCable\vbaudio_cable64_win7.cat"
-    $FullCertificateExportPath = "C:\Users\$env:USERNAME\Downloads\VBCable\VBCert.cer"
-    $VB = @{}
-    $VB.DriverFile = $pathToCatFile;
-    $VB.CertName = $FullCertificateExportPath;
-    $VB.ExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
-    $VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
-    [System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
-    Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $VB.CertName | Out-Null
-    Start-Process -FilePath "C:\Users\$env:Username\Downloads\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h'
+Function VBCableInstallSetupScheduledTask {
+$XML = @"
+<?xml version="1.0" encoding="UTF-16"?>
+<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
+  <RegistrationInfo>
+    <Description>Install VB Cable</Description>
+    <URI>\Install VB Cable</URI>
+  </RegistrationInfo>
+  <Triggers>
+    <LogonTrigger>
+      <Enabled>true</Enabled>
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)</UserId>
+      <Delay>PT2M</Delay>
+    </LogonTrigger>
+  </Triggers>
+  <Principals>
+    <Principal id="Author">
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)</UserId>
+      <LogonType>S4U</LogonType>
+      <RunLevel>HighestAvailable</RunLevel>
+    </Principal>
+  </Principals>
+  <Settings>
+    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
+    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
+    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
+    <AllowHardTerminate>true</AllowHardTerminate>
+    <StartWhenAvailable>false</StartWhenAvailable>
+    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
+    <IdleSettings>
+      <StopOnIdleEnd>true</StopOnIdleEnd>
+      <RestartOnIdle>false</RestartOnIdle>
+    </IdleSettings>
+    <AllowStartOnDemand>true</AllowStartOnDemand>
+    <Enabled>true</Enabled>
+    <Hidden>false</Hidden>
+    <RunOnlyIfIdle>false</RunOnlyIfIdle>
+    <WakeToRun>false</WakeToRun>
+    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
+    <Priority>7</Priority>
+  </Settings>
+  <Actions Context="Author">
+    <Exec>
+      <Command>C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe</Command>
+      <Arguments>-file %programdata%\Easy-GPU-P\VBCableInstall.ps1</Arguments>
+    </Exec>
+  </Actions>
+</Task>
+"@
+
+    try {
+        Get-ScheduledTask -TaskName "Install VB Cable" -ErrorAction Stop | Out-Null
+        Unregister-ScheduledTask -TaskName "Install VB Cable" -Confirm:$false
+        }
+    catch {}
+    $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\VBCableInstall.ps1'
+    $trigger =  New-ScheduledTaskTrigger -AtStartup
+    Register-ScheduledTask -XML $XML -TaskName "Install VB Cable" | Out-Null
     }
-  
-#if(((Get-ChildItem -Path Cert:\CurrentUser\TrustedPublisher).DnsNameList.Unicode -like "Parsec Cloud, Inc.")) {
-    if (!(Get-WmiObject Win32_VideoController | Where-Object name -like "Parsec Virtual Display Adapter")) {
-    #cmd /c C:\ProgramFiles\Easy-GPU-P\cert.bat
-    Get-PnpDevice | Where-Object {$_.friendlyname -like "Microsoft Hyper-V Video" -and $_.status -eq "OK"} | Disable-PnpDevice -confirm:$false
-    Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe" -ArgumentList "/s"
+Function ParsecVDDInstallSetupScheduledTask {
+$XML = @"
+<?xml version="1.0" encoding="UTF-16"?>
+<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
+  <RegistrationInfo>
+    <Description>Install Parsec Virtual Display Driver</Description>
+    <URI>\Install Parsec Virtual Display Driver</URI>
+  </RegistrationInfo>
+  <Triggers>
+    <LogonTrigger>
+      <Enabled>true</Enabled>
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).Name)</UserId>
+      <Delay>PT2M</Delay>
+    </LogonTrigger>
+  </Triggers>
+  <Principals>
+    <Principal id="Author">
+      <UserId>$(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)</UserId>
+      <LogonType>S4U</LogonType>
+      <RunLevel>HighestAvailable</RunLevel>
+    </Principal>
+  </Principals>
+  <Settings>
+    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
+    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
+    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
+    <AllowHardTerminate>true</AllowHardTerminate>
+    <StartWhenAvailable>false</StartWhenAvailable>
+    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
+    <IdleSettings>
+      <StopOnIdleEnd>true</StopOnIdleEnd>
+      <RestartOnIdle>false</RestartOnIdle>
+    </IdleSettings>
+    <AllowStartOnDemand>true</AllowStartOnDemand>
+    <Enabled>true</Enabled>
+    <Hidden>false</Hidden>
+    <RunOnlyIfIdle>false</RunOnlyIfIdle>
+    <WakeToRun>false</WakeToRun>
+    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
+    <Priority>7</Priority>
+  </Settings>
+  <Actions Context="Author">
+    <Exec>
+      <Command>C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe</Command>
+      <Arguments>-file %programdata%\Easy-GPU-P\ParsecVDDInstall.ps1</Arguments>
+    </Exec>
+  </Actions>
+</Task>
+"@
+
+    try {
+        Get-ScheduledTask -TaskName "Install Parsec Virtual Display Driver" -ErrorAction Stop | Out-Null
+        Unregister-ScheduledTask -TaskName "Install Parsec Virtual Display Driver" -Confirm:$false
+        }
+    catch {}
+    $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\Easy-GPU-P\ParsecVDDInstall.ps1'
+    $trigger =  New-ScheduledTaskTrigger -AtStartup
+    Register-ScheduledTask -XML $XML -TaskName "Install Parsec Virtual Display Driver" | Out-Null
     }
 
-<#}
-Else {
-Restart-Computer
-}
-#>
+ParsecVDDMonitorSetupScheduledTask
+VBCableInstallSetupScheduledTask
+ParsecVDDInstallSetupScheduledTask
+
+Start-ScheduledTask -TaskName "Install VB Cable"
+Start-ScheduledTask -TaskName "Install Parsec Virtual Display Driver"
+Start-ScheduledTask -TaskName "Monitor Parsec VDD State"
\ No newline at end of file
diff --git a/User/psscripts.ini b/User/psscripts.ini
index 80b7b8b..9292f3c 100644
--- a/User/psscripts.ini
+++ b/User/psscripts.ini
@@ -1,4 +1,4 @@
-
-[Logon]
-0CmdLine=Install.ps1
-0Parameters=-team_id 1mhDZ8RNbpGwFYwGYrMu9ewwcby -key ae31d6e201227b7caa977a0a9bce83652e67f29662d284c5e5c20db61e6d16d2
+
+[Logon]
+0CmdLine=Install.ps1
+0Parameters=
\ No newline at end of file
diff --git a/VMScripts/Parsec.lnk b/VMScripts/Parsec.lnk
new file mode 100644
index 0000000..a31af00
Binary files /dev/null and b/VMScripts/Parsec.lnk differ
diff --git a/VMScripts/ParsecPublic.cer b/VMScripts/ParsecPublic.cer
new file mode 100644
index 0000000..dfc68ab
Binary files /dev/null and b/VMScripts/ParsecPublic.cer differ
diff --git a/VMScripts/ParsecVDDInstall.ps1 b/VMScripts/ParsecVDDInstall.ps1
new file mode 100644
index 0000000..3664fdc
--- /dev/null
+++ b/VMScripts/ParsecVDDInstall.ps1
@@ -0,0 +1,10 @@
+if (!(Get-WmiObject Win32_VideoController | Where-Object name -like "Parsec Virtual Display Adapter")) {
+(New-Object System.Net.WebClient).DownloadFile("https://builds.parsec.app/vdd/parsec-vdd-0.41.0.0.exe", "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe")
+while (((Get-ChildItem Cert:\LocalMachine\TrustedPublisher) | Where-Object {$_.Subject -like '*Parsec*'}) -eq $NULL) {
+    certutil -Enterprise -Addstore "TrustedPublisher" C:\ProgramData\Easy-GPU-P\ParsecPublic.cer
+    Start-Sleep -s 5
+    }
+Get-PnpDevice | Where-Object {$_.friendlyname -like "Microsoft Hyper-V Video" -and $_.status -eq "OK"} | Disable-PnpDevice -confirm:$false
+Start-Process "C:\Users\$env:USERNAME\Downloads\parsec-vdd.exe" -ArgumentList "/s"
+}
+
diff --git a/VMScripts/VBCableInstall.ps1 b/VMScripts/VBCableInstall.ps1
new file mode 100644
index 0000000..1c981a7
--- /dev/null
+++ b/VMScripts/VBCableInstall.ps1
@@ -0,0 +1,19 @@
+if (!(Get-WmiObject Win32_SoundDevice | Where-Object name -like "VB-Audio Virtual Cable")) {
+    (New-Object System.Net.WebClient).DownloadFile("https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack43.zip", "C:\Users\$env:USERNAME\Downloads\VBCable.zip")
+    New-Item -Path "C:\Users\$env:Username\Downloads\VBCable" -ItemType Directory| Out-Null
+    Expand-Archive -Path "C:\Users\$env:USERNAME\Downloads\VBCable.zip" -DestinationPath "C:\Users\$env:USERNAME\Downloads\VBCable"
+    $pathToCatFile = "C:\Users\$env:USERNAME\Downloads\VBCable\vbaudio_cable64_win7.cat"
+    $FullCertificateExportPath = "C:\Users\$env:USERNAME\Downloads\VBCable\VBCert.cer"
+    $VB = @{}
+    $VB.DriverFile = $pathToCatFile;
+    $VB.CertName = $FullCertificateExportPath;
+    $VB.ExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
+    $VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
+    [System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
+    while (((Get-ChildItem Cert:\LocalMachine\TrustedPublisher) | Where-Object {$_.Subject -like '*Vincent Burel*'}) -eq $NULL) {
+        certutil -Enterprise -Addstore "TrustedPublisher" $VB.CertName
+        Start-Sleep -s 5
+        }
+    Start-Process -FilePath "C:\Users\$env:Username\Downloads\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h'
+    }
+  
\ No newline at end of file
diff --git a/VMScripts/VDDMonitor.ps1 b/VMScripts/VDDMonitor.ps1
new file mode 100644
index 0000000..5e0701c
--- /dev/null
+++ b/VMScripts/VDDMonitor.ps1
@@ -0,0 +1,19 @@
+$Global:VDD
+
+Function GetVDDState {
+$Global:VDD = Get-PnpDevice | where {$_.friendlyname -like "Parsec Virtual Display Adapter"}
+}
+
+While (1 -gt 0) {
+    GetVDDSTate
+    If ($Global:VDD -eq $NULL){
+    Exit
+    }
+    Do {
+        Enable-PnpDevice -InstanceId $Global:VDD.InstanceId -Confirm:$false
+        Start-Sleep -s 5
+        GetVDDState
+        }
+    Until ($Global:VDD.Status -eq 'OK')
+    Start-Sleep -s 10
+}
diff --git a/autounattend.xml b/autounattend.xml
index 46b308c..3665e20 100644
--- a/autounattend.xml
+++ b/autounattend.xml
@@ -123,7 +123,7 @@
       <CEIPEnabled>0</CEIPEnabled>
     </component>
     <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-      <ComputerName>GPUP</ComputerName>
+      <ComputerName>GPUP122</ComputerName>
       <ProductKey>W269N-WFGWX-YVC9B-4J6C9-T83GX</ProductKey>
     </component>
   </settings>
@@ -201,4 +201,4 @@
       <TimeZone>GTB Standard Time</TimeZone>
     </component>
   </settings>
-</unattend>
+</unattend>
\ No newline at end of file