From d636da7e6a21760cb166c7a610898f0f047cb1a6 Mon Sep 17 00:00:00 2001 From: Brian Warren Date: Mon, 7 Apr 2025 19:18:38 -0500 Subject: [PATCH] changes --- ua/registry/qlogic-devapp-tool.ps1 | 188 ++++++++++++++--------------- ua/registry/uagrdev-add.reg | 32 ++--- ua/registry/uagrdev-del.reg | 12 +- ua/registry/uasrdev-del.reg | 1 + 4 files changed, 116 insertions(+), 117 deletions(-) diff --git a/ua/registry/qlogic-devapp-tool.ps1 b/ua/registry/qlogic-devapp-tool.ps1 index 61b7af3..65396d1 100644 --- a/ua/registry/qlogic-devapp-tool.ps1 +++ b/ua/registry/qlogic-devapp-tool.ps1 @@ -9,7 +9,7 @@ param ( $comType, [Parameter(Mandatory=$true)] - [ValidateSet('export', 'import', 'delete', 'createRegFiles')] + [ValidateSet('query', 'import', 'delete', 'generate')] [string] $action, @@ -95,11 +95,11 @@ $progId = "$versionIndependentProgId.1"; switch ($action) { - 'createRegFiles' { + 'generate' { } 'delete' { } - 'export' { + 'query' { } 'import' { if (!$comDir) { @@ -163,16 +163,16 @@ try { Write-Error "An error occurred trying to discover network path to COM server at $comPath" } -function Get-ClsidPaths { +function Get-ClsidData { param( - [Parameter(Mandatory=$true)] + [Parameter(Mandatory=$false)] [string] - $architectureNode + $architectureNode = '\' ) return @( @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $classLabel @@ -185,7 +185,7 @@ function Get-ClsidPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}\LocalServer32" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $comPath @@ -194,7 +194,7 @@ function Get-ClsidPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}\ProgID" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $progId @@ -203,11 +203,11 @@ function Get-ClsidPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}\Programmable" - Values = @() + ValueItems = @() }, @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}\TypeLib" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$typeLibId}" @@ -216,7 +216,7 @@ function Get-ClsidPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)CLSID\{$clsid}\VersionIndependentProgID" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $versionIndependentProgId @@ -226,16 +226,16 @@ function Get-ClsidPaths { ) } -function Get-InterfacePaths { +function Get-InterfaceData { param( - [Parameter(Mandatory=$true)] + [Parameter(Mandatory=$false)] [string] - $architectureNode + $architectureNode = '\' ) return @( @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$interfaceId}" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $interfaceName @@ -244,7 +244,7 @@ function Get-InterfacePaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$interfaceId}\ProxyStubClsid32" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$interfaceStubClsid}" @@ -253,7 +253,7 @@ function Get-InterfacePaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$interfaceId}\TypeLib" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$typeLibId}" @@ -266,7 +266,7 @@ function Get-InterfacePaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$eventInterfaceId}" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $eventInterfaceName @@ -275,7 +275,7 @@ function Get-InterfacePaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$eventInterfaceId}\ProxyStubClsid32" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$eventInterfaceStubClsid}" @@ -284,7 +284,7 @@ function Get-InterfacePaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)Interface\{$eventInterfaceId}\TypeLib" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$typeLibId}" @@ -298,11 +298,11 @@ function Get-InterfacePaths { ) } -function Get-ProgIdPaths { +function Get-ProgIdData { return @( @{ Key = "\SOFTWARE\Classes\$versionIndependentProgId" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $classLabel @@ -311,7 +311,7 @@ function Get-ProgIdPaths { }, @{ Key = "\SOFTWARE\Classes\$versionIndependentProgId\CLSID" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$clsid}" @@ -320,7 +320,7 @@ function Get-ProgIdPaths { }, @{ Key = "\SOFTWARE\Classes\$versionIndependentProgId\CurVer" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $progId @@ -329,7 +329,7 @@ function Get-ProgIdPaths { } @{ Key = "\SOFTWARE\Classes\$progId" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $classLabel @@ -338,7 +338,7 @@ function Get-ProgIdPaths { }, @{ Key = "\SOFTWARE\Classes\$progId\CLSID" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "{$clsid}" @@ -348,20 +348,20 @@ function Get-ProgIdPaths { ) } -function Get-TypeLibPaths { +function Get-TypeLibData { param( - [Parameter(Mandatory=$true)] + [Parameter(Mandatory=$false)] [string] - $architectureNode + $architectureNode = '\' ) return @( @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}" - Values = @() + ValueItems = @() }, @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}\$typeLibVersion" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $typeLibLabel @@ -370,11 +370,11 @@ function Get-TypeLibPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}\$typeLibVersion\0" - Values = @() + ValueItems = @() }, @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}\$typeLibVersion\0\win32" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = $comNetworkPath @@ -383,7 +383,7 @@ function Get-TypeLibPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}\$typeLibVersion\FLAGS" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = '0' @@ -392,7 +392,7 @@ function Get-TypeLibPaths { }, @{ Key = "\SOFTWARE\Classes$($architectureNode)TypeLib\{$typeLibId}\$typeLibVersion\HELPDIR" - Values = @( + ValueItems = @( @{ Name = '(default)' Value = "$comDir\" @@ -402,11 +402,11 @@ function Get-TypeLibPaths { ) } -function Get-Paths { +function Get-Data { param( [Parameter(Mandatory=$false)] [switch] - $bothArchitectures = $false + $includeWrongArchitecturePaths = $false ) if ($env:PROCESSOR_ARCHITECTURE -eq 'x86') { @@ -416,53 +416,30 @@ function Get-Paths { } $paths = New-Object System.Collections.Generic.List[System.Object] - $paths.AddRange((Get-ProgIdPaths)) - $paths.AddRange((Get-ClsidPaths -architectureNode $wow6432Node)) - $paths.AddRange((Get-InterfacePaths -architectureNode $wow6432Node)) - $paths.AddRange((Get-TypeLibPaths -architectureNode $wow6432Node)) + $paths.AddRange((Get-ProgIdData)) + $paths.AddRange((Get-ClsidData -architectureNode $wow6432Node)) + if ($includeWrongArchitecturePaths -and $wow6432Node -ne '\') { + $paths.AddRange((Get-ClsidData)) + } + $paths.AddRange((Get-InterfaceData -architectureNode $wow6432Node)) if ($wow6432Node -ne '\') { - if ($bothArchitectures) { - $paths.AddRange((Get-ClsidPaths -architectureNode $wow6432Node)) - } - $paths.AddRange((Get-InterfacePaths -architectureNode '\')) - $paths.AddRange((Get-TypeLibPaths -architectureNode '\')) + $paths.AddRange((Get-InterfaceData)) + } + $paths.AddRange((Get-TypeLibData -architectureNode $wow6432Node)) + if ($wow6432Node -ne '\') { + $paths.AddRange((Get-TypeLibData)) } return $paths } -function Read-Registry { - $paths = Get-Paths -bothArchitectures - foreach ($path in $paths) { - $path = "$($hiveShort):\$($path.Key)" - try { - $foundKey = Get-Item -Path $path -ErrorAction Stop - } - catch { - Write-Warning "Failed to find $path" - continue - } - $pathShort = $foundKey.PSPath -replace '^.*::', '' - Write-Host - Write-Host $pathShort - $itemProperty = Get-ItemProperty -Path $foundKey.PSPath - if (!$itemProperty) { - continue - } - foreach ($property in $itemProperty.PSObject.Properties) { - Write-Host "$($property.Name)=$property.Value" - } - } -} - switch ($action) { 'delete' { - $paths = Get-Paths -bothArchitectures - foreach ($path in $paths) { - $path = "$($hiveShort):\$($path.Key)" + $data = Get-Data -includeWrongArchitecturePaths + foreach ($dataEntry in $data) { + $path = "$($hiveShort):\$($dataEntry.Key)" try { - $foundKey = Get-Item -Path $path -ErrorAction Stop - #Remove-Item -Path $path -Recurse -Force - Write-Information "Deleted registry key: $foundKey" + Remove-Item -Path $path -Recurse -Force -ErrorAction Stop + Write-Information "Deleted registry key: $path" } catch { Write-Error "Failed to find $path" @@ -471,38 +448,59 @@ switch ($action) { } } 'import' { - $paths = Get-Paths - foreach ($path in $paths) { - $path = "$($hiveShort):\$($path.Key)" + $data = Get-Data + foreach ($dataEntry in $data) { + $path = "$($hiveShort):\$($dataEntry.Key)" try { - # $newKey = New-Item -Path $keyEl.Key -Force - $newKey = Get-Item -Path $path -ErrorAction Stop - Write-Information "Imported key: $newKey" + New-Item -Path $path -Force -ErrorAction Stop + Write-Information "Imported key: $path" } catch { Write-Error "Failed to import key: $path" continue } - foreach ($value in $key.Values) { + foreach ($valueItem in $dataEntry.ValueItems) { try { - #$newItem = New-ItemProperty -Path $key.Key -Name $value.Name -Value $value.Value -PropertyType 'String' -Force - #Write-Information "Imported value: $newItem" - Write-Information "Imported value: $($value.Name) in $($key.Key)" + New-ItemProperty -Path $path -Name $valueItem.Name -Value $valueItem.Value -PropertyType 'String' -Force -ErrorAction Stop + Write-Information "Imported value: $($valueItem.Name) in $path" } catch { - Write-Error "Failed to create entry: $($value.Name) in $($key.Key)" + Write-Error "Failed to create entry: $($valueItem.Name) in $path" continue } } } } - 'export' { - Read-Registry + 'query' { + $data = Get-Data -includeWrongArchitecturePaths + foreach ($dataEntry in $data) { + $path = "$($hiveShort):\$($dataEntry.Key)" + try { + $foundKey = Get-Item -Path $path -ErrorAction Stop + } + catch { + Write-Warning "Failed to find $path" + continue + } + $pathShort = $foundKey.PSPath -replace '^.*::', '' + Write-Host + Write-Host $pathShort + $itemProperty = Get-ItemProperty -Path $path + if (!$itemProperty) { + continue + } + foreach ($property in $itemProperty.PSObject.Properties) { + if ($property.Name.StartsWith('PS')) { + continue + } + Write-Host "$($property.Name)=$($property.Value)" + } + } } - 'createRegFiles' { + 'generate' { $outFileAdd = "$appName-add.reg" $outFileDel = "$appName-del.reg" - $paths = Get-Paths + $data = Get-Data if (Test-Path $outFileAdd) { try { Remove-Item -Path $outFileAdd -ErrorAction Stop @@ -514,12 +512,12 @@ switch ($action) { } Write-Output 'Windows Registry Editor Version 5.00' > $outFileAdd Write-Output 'Windows Registry Editor Version 5.00' > $outFileDel - foreach ($pathItem in $paths) { - $path = "$($hive)$($pathItem.Key)" + foreach ($dataEntry in $data) { + $path = "$($hive)$($dataEntry.Key)" Write-Output '' >> $outFileAdd Write-Output "[$path]" >> $outFileAdd Write-Output "[-$path]" >> $outFileDel - foreach ($valueItem in $pathItem.Values) { + foreach ($valueItem in $dataEntry.ValueItems) { if ($valueItem.Name -eq '(default)') { $name = '@' } else { diff --git a/ua/registry/uagrdev-add.reg b/ua/registry/uagrdev-add.reg index 3541f54..da1ba9d 100644 --- a/ua/registry/uagrdev-add.reg +++ b/ua/registry/uagrdev-add.reg @@ -53,22 +53,6 @@ Windows Registry Editor Version 5.00 @="{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}" "Version"="1.0" -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] - -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] -@="QWDevice 1.0 Type Library" - -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0] - -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0\win32] -@="C:\\temp\\ua\\UA-SUITE\\39.1.3\\UAGRDEV\\6.0-cute\\uagrdevs.exe" - -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\FLAGS] -@="0" - -[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\HELPDIR] -@="C:\\temp\\ua\\UA-SUITE\\39.1.3\\UAGRDEV\\6.0-cute\\" - [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D178FEAC-4969-45B4-92BF-4582EA5C6F47}] @="IQWDev" @@ -89,6 +73,22 @@ Windows Registry Editor Version 5.00 @="{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}" "Version"="1.0" +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] + +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] +@="QWDevice 1.0 Type Library" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0] + +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0\win32] +@="C:\\temp\\ua\\UA-SUITE\\39.1.3\\UAGRDEV\\6.0-cute\\uagrdevs.exe" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\FLAGS] +@="0" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\HELPDIR] +@="C:\\temp\\ua\\UA-SUITE\\39.1.3\\UAGRDEV\\6.0-cute\\" + [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] diff --git a/ua/registry/uagrdev-del.reg b/ua/registry/uagrdev-del.reg index 7c444d9..98b31dd 100644 --- a/ua/registry/uagrdev-del.reg +++ b/ua/registry/uagrdev-del.reg @@ -16,18 +16,18 @@ Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}\ProxyStubClsid32] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}\TypeLib] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0\win32] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\FLAGS] -[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\HELPDIR] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D178FEAC-4969-45B4-92BF-4582EA5C6F47}] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D178FEAC-4969-45B4-92BF-4582EA5C6F47}\ProxyStubClsid32] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D178FEAC-4969-45B4-92BF-4582EA5C6F47}\TypeLib] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}\ProxyStubClsid32] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{FDE206D5-EB3E-4DB1-AC3E-6CF314417443}\TypeLib] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0\win32] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\FLAGS] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\HELPDIR] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{FB2C3447-9D8D-4AD0-9234-A163505FC3AE}\1.0\0] diff --git a/ua/registry/uasrdev-del.reg b/ua/registry/uasrdev-del.reg index 7bdb57a..f5fd83b 100644 --- a/ua/registry/uasrdev-del.reg +++ b/ua/registry/uasrdev-del.reg @@ -1,4 +1,5 @@ Windows Registry Editor Version 5.00 + [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QSRDevice.QSRDev] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QSRDevice.QSRDev\CLSID] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QSRDevice.QSRDev\CurVer]