Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Registry-Wert mit Batch auslesen, ändern und wieder einspielen

Frage Entwicklung Batch & Shell

Mitglied: zensbert

zensbert (Level 1) - Jetzt verbinden

18.03.2009, aktualisiert 20:10 Uhr, 12626 Aufrufe, 10 Kommentare

Servus,
Ich weiss dass es schon dazu Themen gibt und normalerweise klappt das sonst auch immer wenn ich in Batches mit der Registry arbeite aber ich habe hier grad irgendwie Denkblockade.
Möchte den Key "avgnt" aus "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" auslesen, der den wert ""C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min" enthält.
dieser Wert soll in eine Variable, und dann mit einem Zusatz wieder eingespielt werden, ca so:

Echo Lese Installationspfad aus Registry..
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt') DO SET startup=%%B
ping 127.0.0.1 -n 2 >nul
Echo.
Echo Žndere Registrywert..
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "avgnt" /t REG_SZ /d "%startup% /nosplash" /f >nul
ping 127.0.0.1 -n 2 >nul

Aber: der Wert avgnt enthält schon hochkommata: "C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min
weshalb er sich nicht einlesen lässt.
Nächstes Problem ist, dass wenn ich ihn Einlesen kann auch da die Hochkommata stören, da der Zusatz den ich an den Wert hängen will ein Leerzeichen hat.

Zusammengefasst:
Dort steht
"C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min
muss aber
"C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min /nosplash
sein

der Programmpfad muss an der Stelle in der Registry eingelesen werden, da die Avira Produkte auf die das angewandt werden soll verschieden sind.

Für die dies interessiert, das Ändern dieses AutoRun-Wertes deaktiviert den Splash-Bildschirm beim Systemstart von Avira, egal welche Version.

thx

Thomas
Mitglied: DerWoWusste
18.03.2009 um 21:05 Uhr
Zwei Wege umgehen Dein Problem: Dumpe diesen Schlüssel in eine .reg-Datei (regedit /e macht das), wende einen Kommandozeilen-Textersetzer darauf an (dossr.exe von MonkeyJob Systems, Freeware) und ersetzte die Zeile durch die passende und lies die reg-Datei dann wieder ein (mit regedit /s)
Oder aber, Du nutzt GPPs, die können Registrywerte ändern in Abhängigkeit davon, wie sie lauten/ob vorhanden.
Bitte warten ..
Mitglied: Biber
18.03.2009 um 21:18 Uhr
Moin chizophren,

das Geheimnis des erfolgreichen Bätchens ist, eine ähnlich verquere Phantasie wie die Redmonder PraktikantInnen zu entwickeln.
Versuchs mal.... WTF kann sich wohl so ein M$-Azubi wohl ausgedacht haben, um Anführungszeichen zu maskieren?

Die drei oder vier Ideen, die dem gekommen sind, die lassen sich in anderthalb Minuten durchkaspern.
Ergebnis: Mit einem Backslash lässt sich ein Anführungszeichen maskieren.

Mini-Demo:
01.
@echo off & setlocal 
02.
 
03.
set "regkey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"" 
04.
set "oldvalue="C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min" 
05.
Set "addcmd=reg add %regkey% /v avgnt /t REG_SZ /d "%oldvalue:"=\"% /nosplash" /f" 
06.
Set "qrycmd= reg query %regkey% /v avgnt" 
07.
Set "delcmd=reg delete %regkey% /v avgnt /f" 
08.
echo [%addcmd%] 
09.
%addcmd% 
10.
echo [%qrycmd%] 
11.
%qrycmd% 
12.
%delcmd%
Dieser Schnipsel setzt [mit Zusatzvalue /nosplash] , liest aus und löscht den von Dir angeforderten regKey.

[ Löschen bei mir, weil es den Key vorher nicht gab und entsprechend auch nicht geben soll.]

Demo-Aufruf-Output:
01.
>e:\schnipsel\regmani.cmd 
02.
[reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt /t REG_SZ /d "\"C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe\"  /min /nosplash" /f] 
03.
 
04.
 
05.
Der Vorgang wurde erfolgreich ausgeführt. 
06.
[ reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt] 
07.
 
08.
! REG.EXE VERSION 3.0 
09.
 
10.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
11.
    avgnt       REG_SZ  "C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min /nosplash 
12.
 
13.
 
14.
(=21:20:05  D:\temp=)


Der Clou ist nur, dass im Wert %oldvalue% (siehe im Code) alle Anführungszeichen durch Backslash-Anfüzeichen ersetzt werden müssen.

Das macht dieses ........... %oldvalue:"=\"% ......

Thats all.

Grüße
Biber

[Edit] @DerWoWusste
Zwei Wege umgehen Dein Problem:
.... genauer gesagt: Mindestens zwei, vermutlich aber zweihundert....
[/Edit]
Bitte warten ..
Mitglied: zensbert
18.03.2009 um 22:22 Uhr
also das mit den Zusatztool zum Ersetzen würde ich am liebsten lassen, dann müsste ich noch ein zusatztool holen..
da ist der ansatz von biber besser, nur dass Problem ist ja dass ich so immer noch nicht den wert ausgelesen habe, da du sie ja nicht einliest sondern sie vorgibst (oldkey).

hab jetzt aus deiner vorlage das gemacht:
@echo off & setlocal

set "regkey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run""
Set "qrycmd= reg query %regkey% /v avgnt"
FOR /F "tokens=3*" %%A IN ('%qrycmd%') DO SET startup=%%B
Echo %startup%
Set "addcmd=reg add %regkey% /v avgnt "%startup:"=\"% /nosplash" /f"
%addcmd%
pause

dann gibt er aus:
REG_SZ "C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min

Fehler: Zu viele Befehlszeilenparameter
Drücken Sie eine beliebige Taste . . .

Soweit so gut Kompletter Pfad in Variable, nur dass REG_SZ führt natürlich zu einem Fehler..
hab versucht es mit dem token wegzubekommen, aber das hab ich nich hingekriegt..
2m vorm Ziel.. bald gehts^^
danke im voraus
Bitte warten ..
Mitglied: DerWoWusste
18.03.2009 um 22:35 Uhr
Das Zusatztool ist eine einzelstehende .exe, Freeware und wiegt etwa 50 kb, wenn ich mich recht erinnere. Aber bitte, probier es anders.
Bitte warten ..
Mitglied: bastla
19.03.2009 um 00:44 Uhr
Hallo chizophren!

Was erhältst Du denn mit "tokens=4*" ?

Grüße
bastla
Bitte warten ..
Mitglied: zensbert
19.03.2009 um 08:45 Uhr
Trotzdem Danke an DerWoWusste, nur ich versuch das zu vermeiden, da das nur ein Programm-Unterteil ist, und ich schon dutzende zusatztools nutze..

an Bastla:
wenn ich tokens auf 4 setze kommt:

/min

Fehler: Zu viele Befehlszeilenparameter
Drücken Sie eine beliebige Taste . . .

Greetz,
Thomas
Bitte warten ..
Mitglied: Biber
19.03.2009 um 09:23 Uhr
Moin chizophren,

kann im Moment die Problematik nicht so bedrohlich finden...
Hier noch mal der Schnellschuss von gestern um drei Demo-Zeilen erweitert:
01.
@echo off & setlocal 
02.
 
03.
set "regkey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"" 
04.
set "oldvalue="C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min" 
05.
Set "addcmd=reg add %regkey% /v avgnt /t REG_SZ /d "%oldvalue:"=\"% /nosplash" /f" 
06.
Set "qrycmd= reg query %regkey% /v avgnt" 
07.
Set "delcmd=reg delete %regkey% /v avgnt /f" 
08.
 
09.
 
10.
echo [%addcmd%] 
11.
%addcmd% 
12.
echo [%qrycmd%] 
13.
%qrycmd% 
14.
 
15.
echo FOR /F "tokens=2*" %%i in ('%QryCmd%^|find "REG_SZ"') do Set "myoldvalue=%%j" 
16.
FOR /F "tokens=2*" %%i in ('%QryCmd%^|find "REG_SZ"') do set "myOldvalue=%%j" 
17.
echo myoldvalue: [%myoldvalue%] 
18.
%delcmd%
Output der Skizze:
01.
>e:\schnipsel\regmani.cmd 
02.
[reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt /t REG_SZ /d "\"C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe\ 
03.
 
04.
 
05.
Der Vorgang wurde erfolgreich ausgeführt. 
06.
[ reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt] 
07.
 
08.
! REG.EXE VERSION 3.0 
09.
 
10.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
11.
    avgnt       REG_SZ  "C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min /nosplash 
12.
 
13.
FOR /F "tokens=2*" %i in (' reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt|find "REG_SZ"') do Set "myoldvalue=%j" 
14.
myoldvalue: ["C:\Programme\Avira\Avira Premium Security Suite\avgnt.exe" /min /nosplash] 
15.
 
16.
Der Vorgang wurde erfolgreich ausgeführt.
---> die zu zeigende Zeile ist die Outputzeile 14 beginnend mit "myoldvalue"

Grüße
Biber
Bitte warten ..
Mitglied: zensbert
19.03.2009 um 11:23 Uhr
Ah Super, jetzt hab ich den Pfad in der Variable..
bekomme nur mit der Batch:
01.
@echo off & setlocal 
02.
set "regkey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"" 
03.
Set "qrycmd= reg query %regkey% /v avgnt" 
04.
FOR /F "tokens=2*" %%i in ('%QryCmd%^|find "REG_SZ"') do set "startup=%%j" 
05.
echo %startup% 
06.
pause 
07.
Set "addcmd=reg add %regkey% /v avgnt "%startup:"=\"% /nosplash" /f" 
08.
echo %addcmd% 
09.
%addcmd% 
10.
pause 
11.
 
12.
 
Die Ausgabe:
01.
"C:\Programme\Avira\AntiVir Desktop\avgnt.exe" /min 
02.
Drücken Sie eine beliebige Taste . . . 
03.
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v avgnt "\"C:\Prog 
04.
ramme\Avira\AntiVir Desktop\avgnt.exe\" /min /nosplash" /f 
05.
 
06.
Fehler: Zu viele Befehlszeilenparameter 
07.
Drücken Sie eine beliebige Taste . . .
Da macht das Backslash Probleme beim Reg Add..
Eine Idee? Soweit schon mal tausend Dank..
Gruß
Thomas
Bitte warten ..
Mitglied: Biber
19.03.2009 um 11:45 Uhr
Moin chizophren,

Fehler: Zu viele Befehlszeilenparameter
okay, okay.. die Fehlermeldung ist richtig, aber irreführend...
Es ist (je nach Sichtweise) entweder ein Parameter zuviel oder zuwenig.


Set "addcmd=reg add %regkey% /v avgnt "%startup:"=\"% /nosplash" /f"
-----> Hier fehlt bei Dir der Parameter "/D " wie "/Data", der diesem kryptischen String ja vorangehen muss.
Empfehlung.
Set "addcmd=reg add %regkey% /v avgnt /D "%startup:"=\"% /nosplash" /f"
Den anderen Parameter "/t REG_SZ" == "Datentyp REG_SZ" habe ich bewusst weggelassen, weil der m.W. der Default ist.

Grüße
Biber

P.S.
Da macht das Backslash Probleme beim Reg Add..
So etwas bezeichnen wir Biber als voreiligen logischen Trugschluss... davon steht nix in der Fehlermeldung
Bitte warten ..
Mitglied: zensbert
19.03.2009 um 19:36 Uhr
Danke Biber, DerWoWusste und natürlich Bastla..

Super klappt alles..
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen
gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Batch & Shell
Batch Registry auslesen - anpassen
gelöst Frage von pi0h.kkBatch & Shell5 Kommentare

Hallo Zusammen, ich versuche seit einiger Zeit eine ausgelesen Reg-Datei anzupassen, sodass sie als *.ini von einer Applikation genutzt ...

Windows Tools
Registry eines anderen PCs per batch ändern
Frage von schade00Windows Tools5 Kommentare

Hi, Hintergrund ist folgender: Aus Datenschutzgründen mussten wir den Dameware Zugriff "auf Rückfrage" umstellen. Sitzt aber niemand an dem ...

Batch & Shell
Wert in .xml per Batch ändern
Frage von KingPickBatch & Shell3 Kommentare

Hallo an alle, ich stehe leider seit kurzem vor einem "kleinen" Problem. Zuerst: Ja ich weiß so ein ähnliches ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 1 StundeMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 14 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 21 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 22 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...