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 Registrywert mittels Batch ändern

Mitglied: tomost

tomost (Level 1) - Jetzt verbinden

16.11.2007, aktualisiert 20.11.2007, 9821 Aufrufe, 9 Kommentare

Tag zusammen,
ich hab hier im Forum schon ein wenig geforscht aber leider nicht die passende Lösung gefunden, bzw. gefunden schon, klappt aber bei meiner Datei nicht.
Ich möchte mittels einer batch einen Teil der Registry in eine textdatei exportieren, darin einen Wert ändern und dann wieder in die Registry importieren.
Ex- und import ist kein Problem das schaff ich, nur den Wert ändern, da haperts.
Ich hab hier im Forum schon ein vbs script gefunden was search and replace macht, aber damit wird meine txt Datei zerstört.
Ich vermute es liegt daran das jede menge Sonderzeichen ({,@,:, usw.) darin enthalten sind.
Um genauer zu werden:
Ich möchte in meiner export-datei die folgenden Inhalt hat:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}]
@="Netzwerkadapter"
"Class"="Net"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\Descriptions]
"Broadcom NetXtreme 57xx Gigabit Controller"=hex(7):31,00,00,00,00,00
"Intel(R) PRO/Wireless 3945ABG Network Connection"=hex(7):31,00,00,00,00,00
"Asynchroner RAS-Adapter"=hex(7):31,00,00,00,00,00
"WAN-Miniport (L2TP)"=hex(7):31,00,00,00,00,00
"WAN-Miniport (PPTP)"=hex(7):31,00,00,00,00,00
"WAN-Miniport (PPPOE)"=hex(7):31,00,00,00,00,00
"Parallelanschluss (direkt)"=hex(7):31,00,00,00,00,00
"WAN-Miniport (IP)"=hex(7):31,00,00,00,00,00
"Deterministic Network Enhancer Miniport"=hex(7):31,00,00,00,32,00,00,00,33,00,\
00,00,34,00,00,00,00,00
"Cisco Systems VPN Adapter"=hex(7):31,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{008BFB96-5C7B-43B5-ACCC-012F2C0710D9}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{008BFB96-5C7B-43B5-ACCC-012F2C0710D9}\Connection]
"PnpInstanceID"="ROOT\\NET\\0000"
"MediaSubType"=dword:00000001
"Name"="LAN-Verbindung 2"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5549A6BD-AD05-47EF-947C-E709B5981798}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5549A6BD-AD05-47EF-947C-E709B5981798}\Connection]
"PnpInstanceID"="PCI\\VEN_14E4&DEV_1600&SUBSYS_01C21028&REV_02\\4&378EDFA4&0&00E2"
"MediaSubType"=dword:00000001
"Name"="LAN-Verbindung"
"ShowIcon"=dword:00000000
"IpCheckingEnabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{A41ED87D-7219-48F7-8BE5-11257E5B80CF}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{A41ED87D-7219-48F7-8BE5-11257E5B80CF}\Connection]
"PnpInstanceID"="PCI\\VEN_8086&DEV_4222&SUBSYS_10218086&REV_02\\4&360A6DE&0&00E1"
"MediaSubType"=dword:00000002
"Name"="Drahtlose Netzwerkverbindung"
"ShowIcon"=dword:00000000
"IpCheckingEnabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{DD9675F8-99EB-4ED3-ADA9-F70C33A90BFB}]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{DD9675F8-99EB-4ED3-ADA9-F70C33A90BFB}\Connection]
"PnpInstanceID"="ROOT\\NET\\0000"
"MediaSubType"=dword:00000001
"Name"="LAN-Verbindung 3"


Die Zeile, oder Zeilen
"ShowIcon"=dword:00000000
durch
"ShowIcon"=dword:00000001

ersetzen.

Ich will eigentlich "nur" das Icon für die Netzwerkkarte IMMER und für jeden User in der Taskleiste anzeigen lassen. (Windows XP)
Und das mit Bordmitteln, da ich nur dafür nicht extra Software kaufen und installieren möchte.
Da wir die Software mittels Symantec LiveState Delivery verteilen und Installieren, brauch ich eben die Bordmittel.
Ich hoffe es kann mir jemand helfen.

Danke schonmal
tomost
Mitglied: bastla
16.11.2007 um 21:32 Uhr
Hallo tomost und willkommen im Forum!

Ich hab hier im Forum schon ein vbs script gefunden was search and replace macht, aber damit wird meine txt Datei zerstört.
Hoffentlich meintest Du in einem anderen Forum ...

Für hier würde ich mir nämlich eher so etwas erwartet haben:
01.
'SetShowIconInRegFile.vbs 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
sNewRegText = Replace(fso.OpenTextFile(WScript.Arguments(0), 1).ReadAll, _ 
04.
	"""ShowIcon""=dword:00000000", """ShowIcon""=dword:00000001") 
05.
fso.OpenTextFile(WScript.Arguments(1), 2, True).Write sNewRegText
damit bei einem Aufruf der Art
01.
cscript //nologo C:\Scripts\SetShowIconInRegFile.vbs OldRegFile.txt NewRegFile.txt
nix zerstört, sondern sogar noch etwas neu geschaffen wird.

Grüße
bastla

[Edit] Inzwischen hat ahe erklärt, wie es zur "Zerstörung" gekommen sein dürfte: Du hast versucht, unmittelbar die exportierte Datei zu verändern, ohne sie vorher in eine (ASCII/ANSI-)Textdatei zu konvertieren - damit käme auch mein obiges Script nicht zurecht, daher gibt es unten die Unicode-taugliche Variante. [/Edit]
Bitte warten ..
Mitglied: ahe
17.11.2007 um 13:47 Uhr
Hallo Bastla,

wäre es nicht wünschenswert das Ganze direkt über die Reg-Datei laufen zu lassen, ohne den Zwischenschritt über die Txt-Datei?

Ich bastel (allerdings mit wenig Erfolg) an einer Batch Lösung und mußte feststellen, dass es einige Probleme zu umschiffen gibt.

Das Problem ist, dass Reg-Dateien im Unicode Format abgespeichert werden. Durch die folgende Zeile kann man die Datei dann in ANSI umwandeln, womit dann auch diverse bordeigene Tools dann keine Probleme mehr haben (z. B. FINDSTR):
type org_export.reg >neu_export.reg

Wenn man jetzt Dein VB Script über die Datei neu_export.reg laufen läßt, dann funktioniert es, sonst kommt (bei mir) leider etwas sehr komisches heraus...

(laut https://www.administrator.de/.reg-Datei_mit_CMD_oder_VBS_auslesen.html sollte es ja mit dem Parameter True eigentlich ja gehen...)

Bei meinen Tests mittels Batch hatte ich bislang mit der Ersetzung von den Werten ein Problem:

Ich ging 'mal davon aus, dass die exportieren Regdateien für jeden Rechner unterschiedlich aussehen.

Wenn die ID's immer identisch wären, wäre es ja mit den folgenden Zeilen oder einer eigenen Reg-Datei getan:

01.
set "KEY=HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" 
02.
 
03.
REG ADD "%KEY%\{5549A6BD-AD05-47EF-947C-E709B5981798}\Connection" /V ShowIcon /t REG_DWORD /d 1 
04.
REG ADD "%KEY%\{A41ED87D-7219-48F7-8BE5-11257E5B80CF}\Connection" /V ShowIcon /t REG_DWORD /d 1 
05.
...
Da aber vermutlich diverse unterschiedliche Netzwerkkarten mit eigenen ID's im Einsatz sind, muss man die Reg-Datei durchsuchen.

Ich weiss nicht, welche Tests schon gemacht wurden...

Falls es mit findstr versuchst wurde, muss als erstes die Reg-Datei von Unicode nach ANSI umgewandelt werden (umbenennen reicht da nicht!). Z. B. so: type network.reg >.\network2.reg
Danach bekommst man auch etwas zurück (bei mir z. B.):
01.
findstr "ShowIcon" network2.reg 
02.
 
03.
"ShowIcon"=dword:00000001 
04.
"ShowIcon"=dword:00000001 
05.
"ShowIcon"=dword:00000001 
06.
"ShowIcon"=dword:00000001 
07.
"ShowIcon"=dword:00000000
Alternativ funktioniert der Befehl find auch direkt auf Reg-Dateien.

01.
find "ShowIcon" .\network.reg 
02.
 
03.
---------- .\NETWORK.REG 
04.
"ShowIcon"=dword:00000001 
05.
"ShowIcon"=dword:00000001 
06.
"ShowIcon"=dword:00000001 
07.
"ShowIcon"=dword:00000001 
08.
"ShowIcon"=dword:00000000

Script-Idee "geklaut" von einem Deiner 'älteren' Scripts und Bibers Batch-Tut's auf Basis der ANSI-Datei:

Dabei soll die Reg-Datei zeilenweise durchgegangen werden und diese Zeilen in eine neue Datei hineingeschrieben werden. Die Ersetzung des alten Eintrags durch den neuen Eintrag soll dabei durch folgendes gemacht werden:
01.
set Line=!Line:%Von%=%Nach%!
Der gesamte Code:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Datei=%temp%\network.reg" 
03.
set "NeueDatei=%temp%\neu_network.reg" 
04.
set "Von="ShowIcon"=dword:00000000" 
05.
set "Nach="ShowIcon"=dword:00000001" 
06.
if exist "%NeueDatei%" del "%NeueDatei%" 
07.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%NeueDatei%"
Leider funktioniert diese Lösung nicht, ich denke es liegt zum Einen an den vielen Hockkommas und zum Anderen wieder einmal an der Auswertungsreihenfolge der Parameter... (die Datei neu_network.reg wird nicht erzeugt...) oder aber an den vielen Sonderzeichen in der Reg-Datei...

mfg
Axel
Bitte warten ..
Mitglied: Biber
17.11.2007 um 15:28 Uhr
Moin ahe,

für den letzten Teil Deiner Lösungsansatzes würde ich eine andere Strategie wählen.
Zwei Batch-Eigenheiten (die bei bastla's Ansatz mit VBSkript gar nicht relevant sind) müssen berücksichtigt werden.

1. In den Reg-Dateien sind einige der LeerZEILEN erforderlich, damit es sich mit RegEdit wieder importieren lässt.
Und die FOR/F-Anweisung ignoriert (de facto) Leerzeilen und gibt von daher auch keine aus.
2. Ein anderes Problem ist gleich an zwei Stellen das Gleichheitszeichen.
Wenn Du es am CMD-Prompt testest, siehst du, dass ein Ersetzen eines Strings in einer Variable mit "Gleichheitszeichen-im-Wert"
mit der eingebauten CMD-Ersetz-Funktion Akrobatik ist, wenn nicht gar unmöglich.
01.
set varbla="Bla"=blubb 
02.
$cmd$echo Origin[%varbla%] Clone[%varbla:blubb=sülz%] 
03.
Origin["Bla"=blubb] Clone["Bla"=sülz] 
04.
## soweit okay, aber jetzt die Variante, die Du versuchst: 
05.
$cmd$echo Origin[%varbla%] Clone[%varbla:"Bla"=blubb="Bla"=sülz%] 
06.
Origin["Bla"=blubb] Clone[blubb="Bla"=sülz=blubb]
-->wie Du siehst, wird ab dem ersten =-Zeichen ersetzt....

Also würde ich (falls bastla und seine Lösungen grad nicht greifbar wären und ich irgendwas aus Batch zaubern müsste) es so machen:

01.
::---CloneReg.bat  
02.
@echo off & setlocal 
03.
If "%~1"=="" %0 network.reg 
04.
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%~1"') do ( 
05.
 if "%%j"=="" (echo.) ELSE (   
06.
 For /f "delims== tokens=1,2*" %%x in ("%%j") do ( 
07.
    If "%%y"=="" (echo %%x) ELSE (  
08.
    If /i "%%~x"=="ShowIcon" (echo %%x=dword:00000001) Else echo %%x=%%y 
09.
))))
Diese CloneReg.bat aufrufen mit dem dem Namen der Originaldatei (z.B. Network.reg) und, falls mir das Ergebnis auf dem Bildschirm zusagt, das ganze nochmal aufrufen und das Ergebnis umleiten in eine neue Datei.
01.
CloneReg %temp%\network.reg >>neu_network.reg.
Aber, wie Du siehst, ist eine Batch-Lösung hier im Vergleich zu VBSkript elendiglich lang.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
17.11.2007 um 17:28 Uhr
Hallo ahe!

wäre es nicht wünschenswert das Ganze direkt über die Reg-Datei laufen zu lassen, ohne den Zwischenschritt über die Txt-Datei?
Abgesehen davon, dass die Txt-Datei nicht meine Erfindung war, hast Du natürlich Recht - das macht dann aber das Script natürlich länger (besonders, wenn ich das Ergebnis auch wieder in Unicode schreibe - noch ein " ,True" mehr ):
01.
'SetShowIconInNativeRegFile.vbs 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
sNewRegText = Replace(fso.OpenTextFile(WScript.Arguments(0), 1, , True).ReadAll, _ 
04.
	"""ShowIcon""=dword:00000000", """ShowIcon""=dword:00000001") 
05.
fso.OpenTextFile(WScript.Arguments(1), 2, True, True).Write sNewRegText
Grüße
bastla
Bitte warten ..
Mitglied: ahe
19.11.2007 um 09:59 Uhr
Hallo Ihr,

ich sollte mich wohl doch mehr mit VB Script befassen (seufz) ...

@Biber: Beim Herumprobieren hatte ich zwischendurch auch schon 'mal den Effekt, dass alles, was hinter dem Gleichheitszeichen war, abgetrennt war. Die erzeugte Reg-Datei sah dann doch recht seltsam aus...

Ich glaube auch, dass Bastla's Lösung der elegantere Weg ist.

@bastla: In Unicode schreiben ist ja eigentlich hier nicht notwendig (es sei denn, man hat es mit speziellen Zeichen aus dem Unicode Bereich zu tun, bei DWORD hoffentlich seltener).
Deine Lösung ist, finde ich, schön kurz und verständlich, im Gegensatz zur der "elendiglich" langen Batchlösung (sorry Biber )

Ich denke ich muss mir doch 'mal die Parameter von OpenTextFile genauer anschauen.

mfg
Axel
Bitte warten ..
Mitglied: bastla
19.11.2007 um 12:40 Uhr
@ahe
In Unicode schreiben ist ja eigentlich hier nicht notwendig
Vermutlich nicht - ich hab's vor allem zu Demozwecken verwendet, und weil ich dann mit "fc /b" Original- und bearbeitete Datei leicht vergleichen konnte.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.11.2007 um 12:50 Uhr
@bastla, @ahe

Schön, dass wir alle darüber gesprochen haben, aber dennoch:

@tomost aka ThreadOwner
Liest Du noch mit und möchtest Du auch mal zu Wort kommen?
Ist die Frage für Dich beantwortet oder eher zerredet?


Bitte um Feedback
Biber
Bitte warten ..
Mitglied: tomost
20.11.2007 um 09:51 Uhr
Hallo zusammen,
sorry leute, ich war bis inkl. gestern krank.
Sobald ich meine Mails durch hab werde ich mir mal alles anschauen und meinen "Senf" dazugeben.

Danke schonmal.

tomost
Bitte warten ..
Mitglied: tomost
20.11.2007 um 10:59 Uhr
Hallo Leute,
ich bin begeistert.
Mit dem script
'SetShowIconInNativeRegFile.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
sNewRegText = Replace(fso.OpenTextFile(WScript.Arguments(0), 1, , True).ReadAll, _
"""ShowIcon""=dword:00000000", """ShowIcon""=dword:00000001")
fso.OpenTextFile(WScript.Arguments(1), 2, True, True).Write sNewRegText

funktionierts perfekt.

Herzlichen Dank an alle.
Grüße
tomost
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Registrywert suchen und Oberschlüssel löschen

gelöst Frage von busteronBatch & Shell7 Kommentare

Hallo werte Gemeinschaft, leider bin ich nirgends im Internet fündig geworden um eine Lösung zu bekommen. Ich hab folgendes ...

Batch & Shell

Powershell - Registrywert setzen

gelöst Frage von DaniBatch & Shell2 Kommentare

Guten Abend zusammen, ich versuche in der Windowsregistry einen Key wie diesen anzulegen: Dazu habe ich folgenden Code entworfen: ...

Batch & Shell

Dateiname über Batch ändern

gelöst Frage von c64b311ee9Batch & Shell6 Kommentare

Hallo liebe Community, folgendes Problem!: Ich habe einen Ordner mit 500 PDF Dateien. Diese sind nach folgendem Schema aufgebaut. ...

Batch & Shell

Varaible inerhalb eines Batch ändern

gelöst Frage von SuperjotaBatch & Shell4 Kommentare

Hallo, ich habe ein Problem. ich möchte eine von außen erhaltene variable abändern. Wie kann man das machen? z.b. ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 StundeWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 6 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 21 StundenSicherheit7 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing26 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless20 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...