Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateieditierung per Batchdatei (machine.config)

Frage Entwicklung Batch & Shell

Mitglied: hanswd

hanswd (Level 1) - Jetzt verbinden

24.01.2006, aktualisiert 30.01.2006, 9269 Aufrufe, 10 Kommentare

Hallo, ich hab erst nach anderen Möglichkeiten gesucht, aber Batch-Dateien erscheinen mir jetzt als sehr leistungsfähig und vielleicht weiss jemand, wie man folgendes Problem löst:


Unter C:\WINDOWS\Microsoft.NET\Framework\
gibt es einen der Version des verwendeten Framework entsprechden Unterordner, z.B.
v1.1.4322\CONFIG
und dort liegt die Datei: "machine.config"

In der Datei gibt es das Tag: processModel und dort muss das Attribut userName='machine' mit userName='SYSTEM' ausgetauscht werden.
Kann man das per Batch-Datei machen? Wie würde sowas aussehen?
Erstmal muss er ja die richtige machine.config finden (kann auch in v1.0.3705\CONFIG liegen...)

Danke schonmal

H.
Mitglied: Biber
24.01.2006 um 21:46 Uhr
Moin hanswd,

lässt sich machen, aber es gibt drei (mögliche) Schwierigkeiten dabei:

a) Es wäre zu prüfen, ob M$ so dämlich war, einem x-beliebigen dahergelaufenen Batch die Änderung der machine.config zu erlauben. Immerhin stehen da zum Beispiel im Abschnitt &ltprocessModel&gt auch solche Sachen wie Username und Passwort drin. Andererseits... wie ich M$ einschätze, ist das kein Problem...

b) Wie Du auch angesprochen hast - irgendwie muss vorher der gültige (Versions-) Pfad ermittelt werden.
Ich weiß nicht, ob/wo der in der Registry steht oder sonst aus dem aufrufenden Kontext ermittelt werden kann - das müsstest Du klären. Oder es muss fest in den Batch verdrahtet ("hart codiert") werden, was ich auch ungern mache.

c) Da die machine.config ja eine XML-Datei ist, sind im Batch ein paar Maskierungen (für die Größer/Kleiner-Zeichen, die ja auch im Batch Steuerzeichen sind) nötig. Da so etwas aber öfters mal hier nachgefragt wird, fände ich das einen schönen Anlass für einen Beispiel-Batch und helfe gerne mit.

Kannst Du zu Punkt a) und b) etwas recherchieren bitte?

Grüße Biber
Bitte warten ..
Mitglied: hanswd
25.01.2006 um 01:02 Uhr
Hi Biber, klingt gut, hier schon mal was zu Deinen Punkten:

Zu a)

Die Datei ist jedenfalls nicht extra geschützt wie es scheint, ich denke mal,das wird kein Problem sein sicherheitstechnisch...Hab ansonsten aber keine Quellen gefunden, die da schonmal per Batchdatei geändert haben

Zu b)

Es gibt sogar mehrere Stellen in der Registry in denen der Pfad zur machine.config steht:
1.
01.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\4AA80E9DBDA37C74BBB132651E9BBF8A] 
02.
"DDE7F2BCF1D91C3409CFF425AE1E271A"="C?\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config"
oder
2.
01.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls] 
02.
... 
03.
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config"=dword:00000001 
04.
...
Kompletter 2.ter Key: [Edit Biber: wieder ein bisschen gekürzt.... so genau brauchen wir es doch nicht.. [/Edit]
</code>
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]
"C:\\Programme\\Gemeinsame Dateien\\Microsoft Shared\\Triedit\\dhtmled.ocx"=dword:00002710
[...........]
"C:\\WINDOWS\\system32\\rired32e.dll"=dword:00000001
"C:\\WINDOWS\\system32\\SUPPORT.INI"=dword:00000001
......
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.0.3705\\installutil.exe.config"=dword:00000002
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config"=dword:00000001
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\mscorcfg.msc"=dword:00000001
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\mscoree.tlb"=dword:00001000
.......
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\IEExecRemote.dll"=dword:00000001
</code>
Bitte warten ..
Mitglied: Biber
25.01.2006 um 08:14 Uhr
Moin hanswd,

danke schon mal für die Recherche.
Der zweite RegKey sieht vertrauenserweckender aus - der lässt sich ja auch auf verschiedenen Rechnern wiederfinden.
Allerdings muss der Batch (bzw. der Batch-aufrufende-User) die Rechte zum Lesen des HKLM-Zweiges haben. Sollten wir schon mal im Hinterkopf behalten als Restriktion.
Dazu bitte noch mal den SubKey unter [..SharedDLLs] posten (bzw. Editieren in Deiner Antwort.)

Wenn Du dann noch schreibst, was Du (ggf. abhängig von...bla..) ändern willst, dann können wir heute abend loslegen.
Vorher hab ich wenig Luft.

Grüße Biber
Bitte warten ..
Mitglied: hanswd
25.01.2006 um 12:41 Uhr
So, hab mal den kompletten Key in die Antwort davor gepackt, und in der Frage steht jetzt auch drin, was er machen soll:
=> username='machine' in username='system'

Das wurde in dem Beitrag wohl ausgeblendet, da vor processModel ein Kleinerzeichen stand!!

Gruß
H.
Bitte warten ..
Mitglied: Biber
29.01.2006 um 13:11 Uhr
So, hanswd,

heute nachmittag könnten wir ein wenig weiterbasteln.
Den ersten Teil, die Ermittlung des Pfades zur "aktiven" Datei machine.config kann ich Dir schon posten.
Zum Bearbeiten dieser XML-Datei hätte ich gern noch ein bisschen Input. Ich schick Dir mal eine PN mit meiner Mailadresse und bitte um eine realistische machine.config mit den Angaben, was geändert werden soll.

01.
::--snipp ErmittleMachineConfigPath.bat 
02.
@echo off & setlocal 
03.
Set "OutOfTheReg=%temp%\MySharedDLLs.reg" 
04.
Set "NeededRegKey=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls" 
05.
regedit /e %OutOfTheReg% %NeededRegKey% 
06.
goto skipProsa 
07.
~~~~~~~~~~~ 
08.
:: In der %OutOfTheReg%-Datei steht jetzt die oben abgedruckte meterlange Liste 
09.
:: Von der brauchen wir eine Zeile: die Zeile mit "machine.config" 
10.
:: Die holen wir mit dem FIND-Befehl 
11.
:: Ein CMD-Prompt-Befehl "find /i "machine.config" %OutOfTheReg%" 
12.
:: würde als Output sinngemäß liefern: 
13.
 
14.
---------- Z:\TEMP\MYSHAREDDLLS.REG 
15.
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config"=dword:00000001</i> 
16.
:: Die ersten beiden Outputzeilen entsorgen wir mit "skip=2" in der nächsten Anweisung, 
17.
:: ebenfalls alles nach dem "="-Zeichen inclusive mit "delims==" 
18.
:skipProsa 
19.
for /F "skip=2 delims==" %%i in ('find /i "machine.config" %OutofTheReg%') do Set "MCFile=%%i" 
20.
:: In MCFile steht jetzt folgendes: 
21.
:: "C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config" 
22.
::da ersetzen wir die doppelten Backslashes durch einfache. 
23.
Set MCFile=%MCFile:\\=\% 
24.
::Ergebnis MCFile="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config" 
25.
::--snapp ErmittleMachineConfigPath.bat
Jetzt könnten wir anfangen....

Gruß Biber
Bitte warten ..
Mitglied: Biber
29.01.2006 um 17:01 Uhr
Jo, dann lass uns mal loslegen....
Ich hätte folgende Alternativstrategien für diesen Zweck:

a) Die "saubere"
Wir parsen die machine.config-XML-Datei, das heißt hangeln uns von Node zu Node, um sicherzustellen, dass auch der richtige XML-Tag in dem richtigen Node geändert wird.
Was dagegen spricht, ist meine Abneigung gegen das 12000ste Neu-Erfinden von solchen Rädern.. XML-Parser gibt es schon reichlich - zwar eher als ASP.net oder Java-Code, aber ..was soll's.
Einen kleinen SAX-Parser oder ähnliches hat bestimmt ziemlich jeder Java-Noob schon mal zusammengeschrotet. Das reizt mich also wenig.

b) Denn wenn es hier mit der konkreten machine.config einfacher geht, sehe ich es pragmatisch.
Ansatz:
- Prüfen, ob die machine.config GENAU eine Zeile mit [Username="machine"] enthält.
- wenn ja (ist in unserem Fall gegeben)
- Sicherungskopie anlegen
b1) mit einem Freeware-Konsolen-Utility "StringReplace.exe" den Text [Username="machine"] durch den Text [Username="system"]
ersetzen. Solche Utilities gibt es, ich habe grad keins zur Hand.
b2) eine StringReplace-Funktion in VBS/JS zusammenbraten oder anpassen. Da hat gemini einige hier im Forum gepostet, die relativ universell sind.
b3) die reine Batch-Lösung.
- Zu ändernde Zeilennummer ermitteln.
- Alle Zeilen DAVOR lesen und eins zu eins wieder schreiben.
- die Zeile selbst neu schreiben
- Alle Zeilen DANACH lesen und eins zu eins wieder schreiben.
Lumpig bei dieser Lösung ist das Maskieren der naturgemäß vielen Größer- und Kleinerzeichen beim Lesen und Schreiben dieser XML-Datei.
Kleiner- und Größerzeichen sind ja Steuerzeichen im Batch und werden deshalb nicht als zum Text zugehörig interpretiert.
Zum Thema Maskierung: siehe in meinen Batch-Tutorials in Batch & Shell.

b4) Da ich wie alle Biber stinkefaul bin, spar ich mir die Maskiererei - ich ersetze vorher alle Kleinerzeichen durch ein Paragrafzeichen, alle Größerzeichen durch ein "deutsches SZ" und später wieder zurück.
Für diesen Zweck habe ich nämlich ein Freeware-Utility namems Change.exe irgendwo mal runtergeladen.
Link trag ich nach, falls/sobald ich ihn finde.
[Edit]hanswd hat den Link auf die change-x.zip gefunden:
http://www.daikatana.org/TecSoft/index.php?os=win&produkte=Dateien
[/Edit]

Funktioniert jedenfalls für einzelne Zeichen sauber:
01.
$cmd$change 
02.
CHANGE Version 1.1 
03.
Programmiert von: tec@Onlinehome.de 
04.
 
05.
Dieses Programm sucht in einer Textdatei nach einem bestimmten 
06.
Buchstaben und ersetzt es durch einen anderen. 
07.
 
08.
Das Programm wird folgendermassen aufgerufen: 
09.
CHANGE.EXE <Datei> <Char1> <Char2> <x> <y> 
10.
 
11.
<Datei> = Pfad + Dateiname der zu durchforstenden Datei 
12.
<Char1> = Nach diesem Buchstabe wird gesucht 
13.
<Char2> = Buchstabe wird ersetzt durch diesen Buchstaben 
14.
<x>     = wenn x = 1 dann: wird jede Zeile am Bildschirm angezeigt 
15.
<x>     = wenn x = 2 dann: wird keine Zeile am Bildschirm angezeigt 
16.
<y>     = wenn y = 1 dann: statt <Char1> wird das Pipezeichen "|" genommen 
17.
<y>     = wenn y = 2 dann: statt <Char2> wird das Pipezeichen "|" genommen 
18.
          Die Eingabe von <y> ist optional - muss also nicht unbedingt sein! 
19.
          <Char1> oder <Char2> werden dann je nachdem ignoriert. Wurde deshalb 
20.
          eingebaut da DOS kein "|" als Parameter erlaubt! 
21.
 
22.
Beispiel: CHANGE.EXE D:\BEISPIEL.TXT T Z 
23.
Es werden in der Datei D:\BEISPIEL.TXT alle Buchstaben T durch Z ersetzt.
Ich verfolge jetzt nur noch Strategie b4) weiter,

Okay, der Batchschnipsel oben hörte auf mit der Ermittling des Pfades der Machine.config.
Nächstes Teilproblem: Gibt es genau EINE Zeile mit [Username="machine"]?
Löse ich mit folgender Zeile:
for /f "skip=1 tokens=3" %%i in ('find /i /c "username=""machine" machine.config') do @set "AnzZeilen=%%i"
... in der Variablen %AnzZeile% sollte jetzt eine "1" stehen, wenn ich sinnvoll weitermachen kann.
Steht eine "0" drin, wurde keine Zeile gefunden (nothing to do).
Werden 2 oder mehr Zeilen gefunden... tja, dann muss mir einer sagen, was ich tun soll. Alle ersetzen? Nur das erste?

Okay, der Rest sollte im weitergeführten Batch nachvollziehbar sein.
01.
::--snipp SetUserToSystemInMachineConfig.bat 
02.
@echo off & setlocal 
03.
Set "OutOfTheReg=%temp%\MySharedDLLs.reg" 
04.
Set "NeededRegKey=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls" 
05.
regedit /e %OutOfTheReg% %NeededRegKey% 
06.
goto skipProsa 
07.
~~~~~~~~~~~ 
08.
:: In der %OutOfTheReg%-Datei steht jetzt die oben abgedruckte meterlange Liste 
09.
:: Von der brauchen wir eine Zeile: die Zeile mit "machine.config" 
10.
:: Die holen wir mit fem FIND-Befehl 
11.
:: Ein CMD-Prompt-Befehl <i>$cmd$find /i "machine.config" %OutOfTheReg%</i> 
12.
:: würde als Output sinngemäß liefern: 
13.
<i>  
14.
---------- Z:\TEMP\MYSHAREDDLLS.REG 
15.
"C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config"=dword:00000001</i> 
16.
:: Die ersten beiden Outputzeilen entsorgen wir mit "skip=2" in der nächsten Anweisung 
17.
:: ebenfalls alles nach dem "="-Zeichen inclusive mit "delims==" 
18.
:skipProsa 
19.
for /F "skip=2 delims==" %%i in ('find /i "machine.config" %OutofTheReg%') do Set "MCFile=%%i" 
20.
:: In MCFile steht jetzt folgendes: 
21.
:: "C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config" 
22.
::da ersetzen wir die doppelten Backslashes durch einfache. 
23.
Set MCFile=%MCFile:\\=\% 
24.
::Ergebnis MCFile="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config" 
25.
:: Die Überprüfung IF exist %MCFILE% sollte schon rein... 
26.
IF NOT exist %MCFILE% exit /b 3 
27.
:: Also raus mit ERRORLEVEL 3 
28.
for /f "skip=1 tokens=3" %%i in ('find /i /c "username=""machine" %MCFile%') do @set "AnzZeilen=%%i" 
29.
IF NOT [%AnzZeilen%]==[1] exit /b 2 
30.
:: wenn nicht genau EINE Zeile mit [username="machine"]...ist Ende hier. 
31.
Set "MCKopie=%temp%\MCTemp.txt" 
32.
Copy /y %MCFile% %MCKopie% >nul 
33.
:: Arbeitskopie der machine.config anlegen. 
34.
:: Alle Kleinerzeichen ersetzen durch §, alle Größerzeichen durch "ß" 
35.
change %MCKopie% ^< § 2 >nul 
36.
change %MCKopie% ^> ß 2 >nul 
37.
:: Die Zeilennummer ermitteln mit dem Text [username="machine"] 
38.
FOR /F "skip=2 tokens=1" %%i IN ('find /i /n "username=""machine" %MCKopie%') DO set "ReplLine=%%i" 
39.
::bei der konkreten Datei machine.config, mit der ich teste,  
40.
:: steht jetzt bei %ReplLine% der Wert [452] für die gefundene Zeile 
41.
::noch eben die eckigen Klammern wech... 
42.
::[Edit] -------Set ReplLine=%ReplLine:[=% 
43.
::[Edit] -------Set ReplLine=%ReplLine:]=% 
44.
::[Edit] Hier war ein M$-Bug, den ich übersehen habe.  
45.
::[Edit]   %ReplLine% wurde falsch gesetzt auf "[452]username=""machine" 
46.
::[Edit] **Drex-M$-Stümper *grmpffffffff* 
47.
::[Edit] Workaround nächste Zeile: [/Edit] 
48.
For /F "delims=[]" %%i in ("%ReplLine%") do set "ReplLine=%%i" 
49.
:: So, jetzt machine.config lesen und neue schreiben: 
50.
Set /a "AktuelleZeile=1" 
51.
Set "MCNew=%temp%\MCNew.txt" 
52.
If exist %MCNew% del %MCNew% 
53.
FOR /f "delims=" %%i IN (%MCTemp%) DO call :ReadAndWrite %%i 
54.
change %MCNew% § ^< 2 >nul 
55.
change %MCNew% ß ^> 2 >nul 
56.
If Exist %MCFile% copy %MCFile% %MCfile%.old >nul 
57.
IF EXIST %MCNew% COPY /y %MCNew% %MCFile% >nul 
58.
goto :eof 
59.
 
60.
:ReadAndWrite Parameter %1 ist die alte Zeile 
61.
IF [%AktuelleZeile%]==[%ReplLine%] echo username="system">>%MCNew% 
62.
IF Not [%AktuelleZeile%]==[%ReplLine%] echo %* >>%MCNew% 
63.
Set /A "AktuelleZeile+=1" 
64.
goto :eof 
65.
::--snapp SetUserToSystemInMachineConfig.bat
Hope it Helps
Biber

P.S. Ich verkürze mal in Deinem Kommentar oben diese meterlange Liste aus der Registry ein bisschen.
P.P.S. GETESTETE *.bat per Mail an hanswd... warte auf sein Ergebnis.
Bitte warten ..
Mitglied: Biber
30.01.2006 um 11:00 Uhr
Nachtrag:
hanswd und ich haben den Batch getestet..der tut auch, was er soll.
Aber: Durch das zeilenweise Lesen und Schreiben mit der FOR..IN..DO-Anweisung werden
a) alle LeerZEILEN aus der machine.config-XML-Datei entfernt
b) auch alle führenden LeerZEICHEN (also die Einrück-Formatierungen) entfernt.
Macht dem Rechner nichts aus - die XML-Datei ist natürlich gültig und interpretierbar.
Für Menschen ist es allerdings schlechter lesbar.
Deshalb nochmal der Hinweis: Einfacher wäre es mit einen von der Konsole verwendbaren Utility, das die Zeile 'username="machine"' durch 'username="system"' ersetzen kann.
Falls jemand einen Link posten könnte, wäre ich dankbar.
Der eigentliche Lösungsweg bleibt trotzdem bestehen.

Grüße biber
Bitte warten ..
Mitglied: hanswd
30.01.2006 um 16:46 Uhr
Ich glaub ich hab da ein passendes Freewaretool gefunden:
String Replace v1.1 - Remove/replace strings from text files
(strep11.zip)

Nr. 1093 auf dieser Liste:
http://www.sac.sk/files.php?d=19&l=

Mfg
Hans
Bitte warten ..
Mitglied: Biber
30.01.2006 um 17:22 Uhr
Jepp, hanswd,
das passt besser. Wie das halt so ist mit geschenkten Gäulen hat dieses Tool zwar auch ein paar Eigenheiten, aber unterm Strich ist es natürlich viel einfacher.

Ich habe es eben mal kurz angetestet:
Das STREP-Utility erwartet im Verzeichnis, aus dem es aufgerufen wird (also nicht in dem Verzeichnis, in dem es die STREP.exe ist) eine Datei namens REPLACE.TXT mit dem Inhalt abwechselnd Suchstring und Ersatztext:
-------snipp REPLACE.Txt
userName="machine"
userName="system"
-------snapp REPLACE.Txt

Mit den Anführungszeichen kommt STREP.exe klar; die beiden Zeilen/die REPLACE.TXT lassen sich auch dem Batch per ECHO anlegen.
Auch diese ganze Einzelzeichen-Ersetzungsmimik mit CHANGE.exe im obigen Batch wird hinfällig.
Zu beachten ist nur, dass STREP.exe nicht mit Extensions größer 3 Zeichen klarkommt; Inputdatei muss eine Extension <=3 Zeichen haben; Outputdateiname wird mit Extensionlänge = 3 angelegt.
Ich denke, von obigen Batch bleibt nur die Anfangsmimik übrig (Ermitteln des machine.config-Pfades via Registry; Überprüfung auf genau ein Vorkommen von SUCHTEXT), danach diese Zeile ersetzen mit STREP und gut ist.

Hätten wir also etwas kürzer haben können. *gg

Grüße und vielen Dank für den Link
Biber
Bitte warten ..
Mitglied: hanswd
30.01.2006 um 18:33 Uhr
Hier mal der Code für die Batch mit Strep 1.1:

01.
@echo off & setlocal 
02.
Set "OutOfTheReg=%temp%\MySharedDLLs.reg" 
03.
Set "NeededRegKey=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls" 
04.
regedit /e %OutOfTheReg% %NeededRegKey% 
05.
 
06.
for /F "skip=2 delims==" %%i in ('find /i "machine.config" %OutofTheReg%') do Set "MCFile=%%i" 
07.
:: In MCFile steht jetzt folgendes: 
08.
:: "C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\CONFIG\\machine.config" 
09.
::da ersetzen wir die doppelten Backslashes durch einfache. 
10.
Set MCFile=%MCFile:\\=\% 
11.
::Ergebnis MCFile="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config" 
12.
:: Die Ueberpruefung IF exist %MCFILE% sollte schon rein... 
13.
IF NOT exist %MCFILE% exit /b 3 
14.
:: Also raus mit ERRORLEVEL 3 
15.
for /f "skip=1 tokens=3" %%i in ('find /i /c "username=""machine" %MCFile%') do @set "AnzZeilen=%%i" 
16.
IF NOT [%AnzZeilen%]==[1] exit /b 2 
17.
:: wenn nicht genau EINE Zeile mit [username="machine"]...Ende hier. 
18.
 
19.
Set "MCResult=%temp%\MCResult.txt" 
20.
Set "MCKopie=%temp%\MCNew.txt" 
21.
Copy /y %MCFile% %MCKopie% >nul 
22.
STREP %temp%\MCNew.txt %temp%\MCResult.txt 
23.
 
24.
If exist %MCKopie% copy /y %MCResult% %MCFile% >nul 
25.
goto :eof
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkmanagement
gelöst Mehrere Switche per Trunk verbinden - korrekte VLAN-Config (8)

Frage von Stadtaffe84 zum Thema Netzwerkmanagement ...

Router & Routing
Router zu Router config ?! zufällige disconnects (11)

Frage von richwhat zum Thema Router & Routing ...

Batch & Shell
gelöst Bginfo config.bgi Datei wird nicht geladen (25)

Frage von Hendrik2586 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...