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 Batch zum automatischen Bearbeiten eines Wertes

Mitglied: M-K-D-B

M-K-D-B (Level 1) - Jetzt verbinden

21.01.2014, aktualisiert 23.01.2014, 2911 Aufrufe, 20 Kommentare, 1 Danke

Hallo,


ich versuche mich gerade daran, einen Wert in der Registry per Batch zu bearbeiten, komme aber nicht so wirklich weiter.

Was soll die Batch können?

Die Batch soll einen Wert (z. B. den Wert AppInit_dlls unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows) auslesen.
Für den Fall, dass sich dort bestimmte Pfade (z. B. C:\ordner\unterordner\datei.dll) befinden, sollen diese Pfade aus den Daten gelöscht werden. Beim Wert "AppInit" ist es ja z. B. so, dass sich hier mehrere verschiedene Pfade befinden können.

Dies erscheint mir deutlich schwerer zu sein als das "einfache" Löschen, Leeren oder Hinzufügen eines Wertes.

Könnt Ihr mir diesbezüglich eventuell behilflich sein?

Vielen Dank.
Mitglied: M-K-D-B
21.01.2014 um 17:15 Uhr
Hallo certifiedit,

vielen Dank für deine schnelle Antwort.


Diese Seite kenn ich zur Genüge, es hilft mir leider gar nicht weiter, trotzdem danke schon mal.

Ich versuche derzeit, das oben beschriebene Problem mit einer for Schleife in den Griff zu bekommen, aber wie man einen neuen Wert auf einen alten "legt", weiß ich nicht.
Bitte warten ..
Mitglied: certifiedit.net
21.01.2014 um 17:19 Uhr
Nun prinzipiell geht das per regedit Import per "überschreiben" - ich denke, das lässt sich auch per Batch abbilden, hab ich aber bisher soweit nie gemacht, da solche Anpassungen noch nie im Enterprise Sektor anfielen und für 3-4 PCs lohnt es sich nicht entsprechend zu skripten.

"regedit /s <regdatei>"
oder eben reg --?

sollte dir weiter helfen.
Bitte warten ..
Mitglied: M-K-D-B
21.01.2014, aktualisiert um 17:30 Uhr
Hallo,

Nun prinzipiell geht das per regedit Import per "überschreiben" - ich denke, das lässt sich auch per Batch
abbilden, hab ich aber bisher soweit nie gemacht, da solche Anpassungen noch nie im Enterprise Sektor anfielen und für 3-4
PCs lohnt es sich nicht entsprechend zu skripten.

"regedit /s <regdatei>"
oder eben reg --?

sollte dir weiter helfen.
Verstehe ich dich richtig?
Du meinst, ich solle den Wert exportieren, dann z. B. mit find oder findstr das entsprechene suchen lassen und dann wieder einfügen?
Bitte warten ..
Mitglied: certifiedit.net
21.01.2014 um 17:41 Uhr
Genau, oder, wenn es immer derselbe ist: Einfach dort hineinpacken, entweder per file.reg oder eben per reg importieren. ;)

Im Zweifelsfall, wenn es nicht unterschiedliche Werte sein müssen brauchst du gar keine Abfrage ob, ein pures überschreiben kostet dich im @all weniger Zeit und Aufwand.
Bitte warten ..
Mitglied: mech01
21.01.2014 um 18:47 Uhr
Moin,

muss es zwangsläufig Batch sein? WSH wäre doch eigentlich besser für diese Aufgabe geeignet oder?

LG
Bitte warten ..
Mitglied: colinardo
21.01.2014, aktualisiert 22.01.2014
Hallo M-K-D-B,
einfaches Powershell-Script genügt:
(In Zeile 3 die Pfade eintragen die entfernt werden sollen ; mit Komma getrennt)
Grüße Uwe
Bitte warten ..
Mitglied: M-K-D-B
21.01.2014 um 19:30 Uhr
Hallo,

vielen Dank schon mal für die weiteren Antworten.


p.s. was noch wichtig wäre, sind die Pfade in AppInit_DLLs bei dir mit [http://support.microsoft.com/kb/197571/de
Leerzeichen oder mit Komma] voneinander getrennt ?
Durch Komma.

Kann mir jemand sagen, warum folgendes nicht funktioniert?

regedit /e "%temp%\export_AppInit_dlls.reg" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows"
findstr /v /i /c:"C:\\ordner\\unterordner\\datei.dll," "%temp%\export_AppInit_dlls.reg" >> "%temp%\import_AppInit_dlls.reg"
regedit /S "%temp%\import_AppInit_dlls.reg"
del /f/q "%temp%\export_AppInit_dlls.reg" 2>nul 1>nul
del /f/q "%temp%\import_AppInit_dlls.reg" 2>nul 1>nul
pause

Der Fehler muss in der 2. zeile liegen, denn mit der option "/v" sollte eigentlich alles außer der String "C:\\ordner\\unterordner\\datei.dll," in die import.reg befördert werden, tut es aber nicht.

Hier der Inhalt meiner export_AppInit_dlls.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"IconServiceLib"="IconCodecService.dll"
"DdeSendTimeout"=dword:00000000
"DesktopHeapLogging"=dword:00000001
"GDIProcessHandleQuota"=dword:00002710
"ShutdownWarningDialogTimeout"=dword:ffffffff
"USERNestedWindowLimit"=dword:00000032
"USERPostMessageLimit"=dword:00002710
"USERProcessHandleQuota"=dword:00002710
@="mnmsrvc"
"DeviceNotSelectedTimeout"="15"
"Spooler"="yes"
"TransmissionRetryTimeout"="90"
"AppInit_DLLs"="C:\\ordner\\unterordner\\datei.dll,"


Es soll quasi "AppInit_DLLs"="" importiert werden. Was muss ich unter findstr ändern?


Vielen Dank!
Bitte warten ..
Mitglied: colinardo
21.01.2014, aktualisiert um 21:34 Uhr
wieso so umständlich? wenn du einfach alles aus dem Wert AppInit_DLLs herauslöschen möchtest machst du das einfach so:
Bitte formuliere dein Anliegen das nächste mal klarer, am Anfang wolltest du nur bestimmte Pfade aus einem Wert herauslöschen und auf einmal alles.

Grüße Uwe
Bitte warten ..
Mitglied: Endoro
21.01.2014 um 20:22 Uhr
Zitat von M-K-D-B:
Es soll quasi "AppInit_DLLs"="" importiert werden. Was muss ich unter findstr ändern?

Hey,
Findstr unterstützt keine 2Byte-Zeichensätze. Du kannst es mit find versuchen.
Gruss.
Bitte warten ..
Mitglied: M-K-D-B
22.01.2014 um 07:17 Uhr
Guten Morgen,

Zitat von colinardo:

wieso so umständlich? wenn du einfach alles aus dem Wert AppInit_DLLs herauslöschen möchtest machst du das
einfach so:
Bitte formuliere dein Anliegen das nächste mal klarer, am Anfang wolltest du nur bestimmte Pfade aus einem Wert
herauslöschen und auf einmal alles.
mein Anliegen habe ich im ersten Post klar formuliert. Da beispielsweise im Wert AppInit_Dlls verschiedene Pfade vorliegen können, möchte ich bestimmte Pfade daraus entfernen können. Der von dir genannte Befehl zur Leerung des o. g. Wertes ist mir wohl bekannt.
Der Pfad "C:\Ordner\unterordner\datei.dll," dient lediglich als "einfaches Beispiel".
Vielen Dank, dass du dran bleibst.


Zitat von Endoro:
Hey,
Findstr unterstützt keine 2Byte-Zeichensätze. Du kannst es mit find versuchen.
Gruss.
Danke für den Tipp, ich werde es heute Nachmittag austesten.
Bitte warten ..
Mitglied: Sheogorath
LÖSUNG 22.01.2014, aktualisiert 23.01.2014
Moin,

Zum auslesen und ändern könntest du hiermit arbeiten:
Gruß
Chris
Bitte warten ..
Mitglied: M-K-D-B
22.01.2014 um 16:17 Uhr
Hallo,



Findstr unterstützt keine 2Byte-Zeichensätze. Du kannst es mit find versuchen.
Gruss.
danke für den Tipp, aber find löscht mir den ganzen Wert aus der .reg Datei raus.
Bitte warten ..
Mitglied: M-K-D-B
22.01.2014 um 17:17 Uhr
Hallo Chris,


Zum auslesen und ändern könntest du hiermit arbeiten:
<code>
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs >%temp%\var.txt
SET /p oldpath=<%temp%\var.txt

del /f/q "%temp%\var.txt" >nul
danke für deine Anregung. Komme zwar mit deiner 2. Zeile nicht klar bzw. weiß noch nicht, wie ich von hier weitermachen soll, aber ich schaus mir mal an.
Bitte warten ..
Mitglied: colinardo
22.01.2014, aktualisiert um 17:26 Uhr
Powershell-Script das das gewüschte alles erledigt ...
(In Zeile 3 jeweils die Pfade mit Komma getrennt eintragen die aus AppInit_DLLs entfernt werden sollen)
Probiers halt mal aus
Grüße Uwe
Bitte warten ..
Mitglied: M-K-D-B
22.01.2014, aktualisiert um 18:21 Uhr
Hallo Uwe,


Zitat von colinardo:

Powershell-Script das das gewüschte alles erledigt ...
(In Zeile 3 jeweils die Pfade mit Komma getrennt eintragen die aus AppInit_DLLs entfernt werden sollen)

Probiers halt mal aus
Grüße Uwe
vielen Dank für dein Powershell-Script, nur muss ich gestehen, dass ich mich damit (Powershell) überhaupt nicht auskenne...
Kann man mit batch ein powershell-script ausführen?
Ich schau mal, dass ich zu Informationen komme...
Bitte warten ..
Mitglied: colinardo
22.01.2014, aktualisiert 27.06.2014
Zitat von M-K-D-B:
vielen Dank für dein Powershell-Script, nur muss ich gestehen, dass ich mich damit (Powershell) überhaupt nicht
auskenne...
Kann man mit batch ein powershell-script ausführen?
klar
Ich schau mal, dass ich zu Informationen komme...

Anleitung: Wie starte ich Powershell-Scripte

  • Zuerst speicherst man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script in der Konsole mit Eingabe des kompletten Pfades der Scriptdatei, oder mit einem Rechtsklick auf die Script-Datei :Mit Powershell ausführen gestartet werden.
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
Methoden zum Starten von PS-Scripten aus Batch und Kommendozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
Wenn man dem Script Parameter übergeben möchte:
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
Man kann auch mehrere Scripte hintereinander ausführen lassen:
.
Bitte warten ..
Mitglied: Endoro
22.01.2014 um 20:31 Uhr
Zitat von M-K-D-B:
danke für den Tipp, aber find löscht mir den ganzen Wert aus der .reg Datei raus.

find löscht die "Null"-Bytes aus dem UTF-16LE, sonst nichts.
Gruss.
Bitte warten ..
Mitglied: Sheogorath
LÖSUNG 23.01.2014, aktualisiert um 15:58 Uhr
Moin,

die 2. Code-Zeile liest die erste Zeile aus %temp%\var.txt, welche deine Registry Value darstellen sollte.

Meine Lösung würde so aussehen, da ich feststellen musste, dass reg query ja in mehreren Zeilen auswirft:
Infos zum ersetzen von Strings:
http://ss64.com/nt/syntax-replace.html

und zu der Query:
http://www.computerbase.de/forum/showthread.php?t=148837&p=1450674# ...

möglicherweise musst du die tokenanzahl anpassen, wenn du Leerzeichen in der Value hast. und eben den zu ersetzenden String

Ganz ohne Powershell und Co :P

Gruß
Chris
Bitte warten ..
Mitglied: M-K-D-B
23.01.2014, aktualisiert um 15:59 Uhr
Hallo,


Zitat von Sheogorath:
Infos zum ersetzen von Strings:
http://ss64.com/nt/syntax-replace.html
auf der Seite war ich gestern auch schon, hab aber bei %variable:StrToFind=NewStr% wohl zu kompliziert gedacht.


Zitat von Sheogorath:
und zu der Query:
http://www.computerbase.de/forum/showthread.php?t=148837&p=1450674# ...
das funktioniert sehr gut.


möglicherweise musst du die tokenanzahl anpassen, wenn du Leerzeichen in der Value hast. und eben den zu ersetzenden String
Ja, stimmt.



Vielen Dank Chris and an alle anderen, die hier Zeit investiert haben!
Bitte warten ..
Ähnliche Inhalte
VB for Applications

CSV Inhalt automatisch bearbeiten - Wert verschieben

gelöst Frage von RJC-00VB for Applications5 Kommentare

Hallo zusammen, leider komme ich mit meinen eigenen Anstrenungen (Newbie) in Bezug auf VB Scripts leider nicht weiter und ...

Batch & Shell

Batch: Variable einen Wert zuweisen

gelöst Frage von veniplexBatch & Shell7 Kommentare

Hallo zusammen! Ich bin gerade am verzweifeln Ich habe in Batch 2 Variablen: Wenn ich mir von diesen den ...

Batch & Shell

Wert aus Batch Schleife in Variable speichern

gelöst Frage von anmelderBatch & Shell5 Kommentare

Ich möchte aus einem Verzeichnis alle Dateien mit einer bestimmten Endung anzeigen lassen. Die Dateien sind nummeriert. Der Nutzer ...

Batch & Shell

Reg query wert als platzhalter in batch

Frage von 136298Batch & Shell4 Kommentare

guten morgen, da ich gerade eine phase nach input habe wäre ich dankbar wenn ihr mir hierbei helfen könnt ...

Neue Wissensbeiträge
Microsoft Office

Office 365 Makro Schutz nicht immer per GPO möglich

Information von sabines vor 2 TagenMicrosoft Office5 Kommentare

Der zum Schutz gegen Verschlüsselungstrojaner wichtige Makroschutz lässt sich wohl in Office 365 nicht immer per GPO einstellen. Für ...

Netzwerkmanagement
How To Mikrotik Netinstall
Erfahrungsbericht von areanod vor 4 TagenNetzwerkmanagement

Jedes Mal wenn ich Netinstall längere Zeit nicht benutzt habe stolpere ich über die „Besonderheiten“ dieser Software. Das ist ...

Microsoft
Microsoft: LDAPS per Update als Default
Information von em-pie vor 4 TagenMicrosoft2 Kommentare

Hallo, Microsoft wird mit einem der zukünftigen Updates LDAP auf LDAPS per Default umstellen. Admins von angebundenen Systemen die ...

Humor (lol)

Funny: Warum es immer schwieriger wird, die richtigen Produkte online zu finden

Information von Dilbert-MD vor 6 TagenHumor (lol)21 Kommentare

Wir befinden uns in der Rubrik "Off Topic - Humor" und in 15 Minuten ist Freitag. und ja, es ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Reichweite bei Netzwerkdruckern mit Kupfer
gelöst Frage von OIOOIOOIOIIOOOIIOIIOIOOONetzwerkgrundlagen34 Kommentare

Guten Tag, aus gegebenem Anlass, möchte ich euch fragen, was aus eurer Sicht, eine akzeptable Reichweite bei einem Netzwerkdrucker ...

Visual Studio
Aufgabenplaner führt Programm inkorrekt aus
Frage von TallerBiskusVisual Studio22 Kommentare

Hallo Leute :) Ich habe ein sehr seltsames Phänomen. Folgende Gegebenheiten : Wir haben einen Windows Server 2012 R2 ...

Windows Tools
Autologoff Local User Windows 10 bei idle Time von 900 Sekunden
Frage von Hendrik2586Windows Tools19 Kommentare

Hallo ihr lieben. :) Ich hatte das Thema schon mal vor einer Weile, aber nun muss ich es nochmal ...

Server-Hardware
Neuer Server - Meinung
gelöst Frage von hukimanServer-Hardware18 Kommentare

Hallo Zusammen, für einen Kunden stelle ich aktuell den ersten Server zusammen, den ich selbst verkaufe. Es soll ein ...