hacklefeucht
Goto Top

Registry-Wert mit Batch auslesen, an einen Schlüssel anhängen und enthaltene Werte ändern

Hallo liebe Administrator(inn)en,

bitte seid so freundlich und helft mir bei einem Problem mit der Registry.
Ich möchte Dwords (Werte) ändern in einem Schlüssel, der von Gerät zu Gerät unterschiedlich ist.
Es gibt einen Schlüssel, der bei allen Geräten gleich ist, wo der individuelle Teil-Schlüssel in einem Wert hinterlegt ist.

[HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort]
"M"="__._PHYSICALPORT3DysonsPhereTL4KMY001"

Dadurch könnte ich den an allen Geräten gleichen Teil-Schlüssel mit dem den individuellen Wert vervollständigen,
den individualen gesamten Schlüssel nachahmen und somit die Werte dort ändern.

Immer gleicher Teil-Schüssel:
[HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\

Individualer Wert ermittelt, beginnt hinter dem gleichbleibenden Schlüssel und den drei " oder nach der 5 Stelle:
__._PHYSICALPORT3DysonsPhereTL4KMY001

könnte aber auch kürzer sein z.B.:
__._PHYSICALPORT3TEC8M7P001

will damit sagen, die Länge des Wertes ist leider nicht immer gleich, endet aber mit einem "

Zusammenführen und hinten eine eckige Klammer ankorken:
[HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001]

Den Wert ermitteln aus einer Batch heraus würde ich folgender Maßen machen:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort" /v "M"

FOR /F "tokens=3 skip=2" %%i IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort" /v "M"') DO SET Individual=%%i


Aber wie flansche ich Individual=%%i an den gleichbleibenden Schlüssel


Den ganzen Kladderadatsch möchte ich dann mit einer Batch in die Registry integrieren.

In einer Reg Datei sieht es ja so aus:
[HKEY_LOCAL_MACHINE\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001]
"PortType"=dword:00000001
"Initialize"=dword:00000001
"Detecting"=dword:00000000
"Release"=dword:00000001
"State"=dword:00000004

Wenn ich aus einer Batch Datei heraus die Werte in die Registry integrieren will, muss es ja so aussehen:
REG ADD HKLM\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001 /f /v PortType /d 1
REG ADD HKLM\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001 /f /v Initialize /d 1
REG ADD HKLM\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001 /f /v Detecting /d 0
REG ADD HKLM\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001 /f /v Release /d 1
REG ADD HKLM\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\__._PHYSICALPORT3DysonsPhereTL4KMY001 /f /v State /d 4

Ich würde mich sehr freuen, wenn mir bei diesem Monster jemand helfen könnte.
Aber nichtsdestoweniger trotz, vielen Dank schon mal für die Geduld das alles hier zu lesen.

Content-ID: 7537738550

Url: https://administrator.de/contentid/7537738550

Ausgedruckt am: 21.11.2024 um 15:11 Uhr

Delta9
Delta9 15.06.2023 um 16:27:15 Uhr
Goto Top
Hallo,
Powershell ist auch eine gute Möglichkeit Registryeinträge auszulesen, anzulegen oder zu ändern.

Sollte eigentlich mit einem "3-4" Zeiler erledigt sein.
Delta9
Delta9 15.06.2023 aktualisiert um 17:01:28 Uhr
Goto Top
So grob aus dem Bauch heraus ohne zu testen:
$registryPath = "HKLM:\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\"  
$registryPathTarget  = "HKLM:\SOFTWARE\Raeuber Corp\Hotzenplotz Manager\Cache\PhysicalPort\"  


$subkeys = Get-ChildItem -Path $registryPath


$variableA = ""  

foreach ($subkey in $subkeys) {

    $subkeyName = $subkey.PSChildName

    if ($subkeyName -match "^.{5}__\._PHYSICALPORT") {  

        $variableA = $subkeyName
        break
    }
}


if ($variableA -ne "") {  

    New-Item -Path ($registryPathTarget  + $variableA) -Force | Out-Null


    Set-ItemProperty -Path ($registryPathTarget + $variableA) -Name "PortType" -PropertyType Dword -Value 1  
    Set-ItemProperty -Path ($registryPathTarget + $variableA) -Name "Initialize" -PropertyType Dword -Value 1  
    Set-ItemProperty -Path ($registryPathTarget + $variableA) -Name "Detecting" -PropertyType Dword -Value 0  
    Set-ItemProperty -Path ($registryPathTarget + $variableA) -Name "Release" -PropertyType Dword -Value 1  
    Set-ItemProperty -Path ($registryPathTarget + $variableA) -Name "State" -PropertyType Dword -Value 4  

    Write-Host "New subkey '$variableA' created under '$registryPath' with the specified values."  
} else {
    Write-Host "No matching subkey found."  
}
hacklefeucht
hacklefeucht 15.06.2023 um 17:06:43 Uhr
Goto Top
Hallo Delta9,

vielen Dank,
werde ich ausprobieren und melde mich morgen.
Muss jetzt leider los, aber dicken Dank für die prompte Antwort.
Schönen Feierabend, bis morgen.

Horrido face-smile