mirror of
https://github.com/jamesstringerparsec/Easy-GPU-PV.git
synced 2024-08-30 18:22:17 +00:00
Improve install of VDD and VBCable
This commit is contained in:
parent
a0d7fa1621
commit
11acb54e46
@ -7,6 +7,7 @@
|
||||
SizeBytes = 40GB
|
||||
MemoryAmount = 8GB
|
||||
CPUCores = 4
|
||||
NetworkSwitch = "Default Switch"
|
||||
UnattendPath = "$PSScriptRoot"+"\autounattend.xml"
|
||||
GPUName = "AUTO"
|
||||
GPUResourceAllocationPercentage = 50
|
||||
@ -103,6 +104,10 @@ 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\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
|
||||
@ -4274,6 +4279,7 @@ param(
|
||||
[string]$UnattendPath,
|
||||
[int64]$MemoryAmount,
|
||||
[int]$CPUCores,
|
||||
[string]$NetworkSwitch,
|
||||
[string]$GPUName,
|
||||
[float]$GPUResourceAllocationPercentage,
|
||||
[string]$SourcePath,
|
||||
@ -4294,7 +4300,7 @@ param(
|
||||
$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
|
||||
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 +4311,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
|
||||
|
201
User/Install.ps1
201
User/Install.ps1
@ -11,8 +11,6 @@ if (Test-Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninst
|
||||
{}
|
||||
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
|
||||
@ -22,23 +20,188 @@ if (Test-Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninst
|
||||
$configfile | Out-File C:\ProgramData\Parsec\config.txt -Encoding ascii
|
||||
}
|
||||
|
||||
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 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>
|
||||
"@
|
||||
|
||||
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
|
||||
}
|
||||
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
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
ParsecVDDMonitorSetupScheduledTask
|
||||
VBCableInstallSetupScheduledTask
|
||||
ParsecVDDInstallSetupScheduledTask
|
||||
|
||||
if (!(Get-WmiObject Win32_VideoController | Where-Object name -like "Parsec Virtual Display Adapter")) {
|
||||
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"
|
||||
}
|
||||
Start-ScheduledTask -TaskName "Install VB Cable"
|
||||
Start-ScheduledTask -TaskName "Install Parsec Virtual Display Driver"
|
||||
Start-ScheduledTask -TaskName "Monitor Parsec VDD State"
|
BIN
VMScripts/ParsecPublic.cer
Normal file
BIN
VMScripts/ParsecPublic.cer
Normal file
Binary file not shown.
10
VMScripts/ParsecVDDInstall.ps1
Normal file
10
VMScripts/ParsecVDDInstall.ps1
Normal file
@ -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.37.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"
|
||||
}
|
||||
|
19
VMScripts/VBCableInstall.ps1
Normal file
19
VMScripts/VBCableInstall.ps1
Normal file
@ -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'
|
||||
}
|
||||
|
19
VMScripts/VDDMonitor.ps1
Normal file
19
VMScripts/VDDMonitor.ps1
Normal file
@ -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
|
||||
}
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user