Jump to content

Vrohandenen Registry Wert erweitern, nicht überschreiben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Moment mal, mit dem ergänzen und dem abspeichern überschreibst du ja den alten Wert.

Hierbei ist es egal um welchen Wert (Binary, DWORD usw.) es sich handelt.

 

In VB gelten hierbei folgende Werte (ohne die API Unterstützung):

 

RegRead = Wert bzw. Schlüssel auslesen.

RegWrite = Wert bzw. Schlüssel schreiben.

RegDelete = Wert bzw. Schlüssel löschen.

Link zu diesem Kommentar

Moin mensa,

 

nun macht da nicht so einen Heckmeck von.

Wenn Du die Reg.exe auf dem Rechner hast, ginge es mit zwei, drei Batchzeilen.

Beispiel bzw. Proof-of-Concept vom CMD-Prompt:

>for /f "tokens=3" %i in ('reg query HKCU\Software\odbc\odbc.ini\MyConnection /v Description^|find "Description"') do @set "thisvalue=%i"
set thisvalue
thisvalue=testdatenbank
[/Code]

Dieses Beispiel würde in die Variable %thisvalue% den vorhandenen Textwert des RegKeys "HKCU\...Whatever" Eintrag "Description" auslesen.

--> etwas anhängen: Set "thisvalue=%thisvalue%_in_Lummerland"

Neu setzen.

[Code]
reg add HKCU\Software\odbc\odbc.ini\Myconnection /v Description /d %thisvalue% /f
[/Code]

 

Das wars.

Im Batch (ungetestete Skizze).

[Code]
@echo off & setlocal
Set "regKey=HKCU\Software\odbc\odbc.ini\MyConnection"
Set "regEntry=Description"
Set "ToAppend=_in_Lummerland"
for /f "tokens=3" %%i in ('reg query %RegKey% /v %RegEntry%^|find "%RegEntry%"') do @set "thisvalue=%%i"
Set "thisvalue=%thisvalue%%toAppend%
Reg add %RegKey% /v %RegEntry% /d %thisvalue% /f
[/Code]

 

Natürlich würde ich die drei im Moment fest verdrahteten Werte %regkey5, %regval% und vor allem %ToAppend% als Parameter der batchdatei vorsehen - sonst macht es wenig Sinn, einen Batch zu schreiben.

 

Grüße

Biber

Link zu diesem Kommentar

Und per Powershell, die früher oder später Batch und VBS ablösen soll, sinds effektiv nur 3 kurze Zeilen:

 

#Powershell 1.0
# by blub, 22.1.2008
# veraendern eines Registrywertes bzw. anhaengen eines Strings

# Parameter mit Beispielwerten setzen
$path="HKLM:\SOFTWARE\_testkey"
$Value="blub"
$appendString="def"

# Value auslesen
$a=get-itemproperty $path -name $Value

# Value verändern (hängt hier den String "def" an)
$a.$Value = $a.$Value + $appendstring

# Value zurückschreiben
Set-ItemProperty -name $Value -path $path $a.$Value

 

Running Windows PowerShell Scripts

 

cu

blub

Link zu diesem Kommentar
Ok, danke!

Das beim Abspeichern der alte Wert überschrieben wird ist klar. Es geht mir ja nur darum, dass die ursprünglichen Werte nicht verloren, sondern nur ergänzt werden.

Das ist also nur mit VB möglich? Nicht direkt in einem .reg File?

Beim ändern des entsprechenden Wertes wird sowohl per VB-Script als auch in den .REG-Files ja nur der Wert verändert, der hier angegeben wird.

Alle anderen Werte bleiben hier so wie diese sind.

 

Es ist im Prinzip so wie in einem Ordner, bei dem verschiedene Dateien vorhanden sind.

Wenn du eine Datei veränderst dann wird nur diese geändert, die anderen Dateien aber nicht.

 

Wichtig ist auch das man beim Befehl RegRead den Key in Klammern setzt ("...\...\...)

Bei RegWrite sind hierbei die Klammern weg zu lassen "...\...\..."

Ein weiterer Knackpunkt ist das du beim schreiben über RegWrite mit "...\...\..." einen Wert angibst, mit "...\...\...\" allerdings einen Schlüssel erzeugst.

Link zu diesem Kommentar
  • 5 Jahre später...

Hallo,

erstmal Danke für die ganzen Infos. Hat mich schon mal weiter gebracht.

Ich habe jetzt folgendes Problem, dass ich für den Wert den ich in die Registry eintragen muss ein Return benötige.

Hier mal mein Beispiel:

 

@echo off & setlocal

Set "regKey=HKCU\Software\Microsoft\Internet Explorer\Main"
Set "regEntry=Start Page"
Set "regEntry2=Secondary Start Pages"
Set "ToAppend=http://www.seite1.de"
Set "ToAppend2=http://www.seite2.de "

FOR /F "tokens=4 delims=     " %%A IN ('REG QUERY %regKey% /v %regEntry%) DO SET thisvalue=%%A"
Set "thisvalue=%ToAppend2% (hier müsste nun das Enter rein)%thisvalue%"

REG ADD %regKey% /v %regEntry% /t Reg_SZ /d %ToAppend% /f

Reg ADD %regKey% /v %regEntry% /t REG_MULTI_SZ /d %thisvalue% /f

 

Ich möchte also den Wert der als Startseite im IE eingetragen war auslesen, in eine Variable speichern und anschließend eine bestimmte Seite als Startseite eintichte.

Die ausgelesene Seite aus der Variable soll er nur in den abderen Registry-Schlüssel eintragen und dazu noch eine zusätzliche Seite.

Das Problem ist halt nur, wenn ich den Wert direkt in der Registry eintrage, dann muss ich die Werte durch ein Enter getrennt eingeben.

 

Hat jemand ein Tipp für mich?
 

Link zu diesem Kommentar
  • 1 Jahr später...

Hallo,

 

ich habe das Script benutzt:

 



@echo off & setlocal
Set "regKey=HKCU\Software\odbc\odbc.ini\MyConnection"
Set "regEntry=Description"
Set "ToAppend=_in_Lummerland"
for /f "tokens=3" %%i in ('reg query %RegKey% /v %RegEntry%^|find "%RegEntry%"') do @set "thisvalue=%%i"
Set "thisvalue=%thisvalue%%toAppend%
Reg add %RegKey% /v %RegEntry%  /d %thisvalue% /f

 

 

dieses funktioniert an sich auch, aber ich habe einen Regedit Eintrag der ca 1000 Zeichen lang ist, das Script "schneidet" aber den Eintrag bei ca 100 Zeichen ab, weiß das jemand wo das Problem liegt?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...