iwan
Goto Top

Registry durchsuchen und ggfs Wert ändern

Hallo,

ich habe hier (Registry durchsuchen, Pfad kopieren, in Variable setzen) schon einen Anhaltspunkt gefunden, aber ich komme nicht zum Ergebnis.
Folgendes möchte ich unter Win XP Prof. SP3 realisieren:
- in der Registry sind die Netzwerkadapter aufgelistet unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}
- darunter gibt es diverse Unterordner, z.B.
{070CF113-65C5-445A-9FF3-8BE976F87F2A}
- in all diesen Unterordner gibt es einen Ordner namens "Connection"

Diesen Unterordner "Connection" möchte ich bei allen abfragen, ob dort ein REG_DWORD namens "IpCheckingEnabled" existiert.
Existiert dieser, dann soll der REG_DWORD "ShowIcon" mit Wert "1" erstellt bzw. geändert werden.

Hier mal der Code, mit dem ich bisher rumspiele, aber leider zu keinem Ergebnis komme:
@echo off & setlocal 
set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"   
set ID= 
for /f %%i in ('reg query "%regkey%" /s ^|find "\Connection"') do (   
    for /f "tokens=2*" %%a in ('reg query "%%i" /v name ^|findstr /i "IpCheckingEnabled"') do (   
	set "ID={%%m}\{%%n}"      
    ) 
) 

if defined ID (  
    echo Ergebnis = %ID%  
) else (  
    echo Nicht gefunden ...  
)
Vielleicht kann mir ja einer helfen und mir sagen, was falsch ist.

Content-ID: 119031

Url: https://administrator.de/contentid/119031

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

bastla
bastla 25.06.2009 um 11:50:17 Uhr
Goto Top
Hallo Iwan!

Sollte sich etwa so machen lassen, wobei hinsichtlich der weiteren Verwendung anstelle der ID der gesamte Key (siehe Zeilen 6 bzw 11) vermutlich vorzuziehen wäre:
@echo off & setlocal 
set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"   
set "ID="  
for /f %%i in ('reg query "%regkey%" /s ^|find "\Connection"') do (   
    for /f "tokens=6,7 delims=\" %%a in ('reg query "%%i" /v IpCheckingEnabled ^>nul 2^>nul ^&^& echo %%i') do set "ID=%%a\%%b"  
    for /f "tokens=6,7 delims=\" %%a in ('reg query "%%i" /v IpCheckingEnabled ^>nul 2^>nul ^&^& echo %%i') do set "Key=%%i"  
) 

if defined ID (  
    echo Ergebnis = %ID%
    echo %Key%
) else (
    echo Nicht gefunden ...
)
Außerdem wird bei einer Auswertung außerhalb der Schleife natürlich nur der letzte passende "Connection"-Eintrag erfasst ...

Grüße
bastla
Iwan
Iwan 25.06.2009 um 11:50:34 Uhr
Goto Top
ich noch mal....

habe nun eine Lösung per VBS gefunden, gebastelt, etc.:
Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."  
strValueName = "IpCheckingEnabled"  
dwValue = 1
 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")  
 
strKeyPath = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"  
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each subkey In arrSubKeys
    'Wscript.Echo subkey  
        strRegKey = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\"  
        strRegKey1 = strRegKey & subkey
        strRegKey2 = "\Connection"  
        strKeyPath = strRegKey1 & strRegKey2
    'Wscript.Echo strKeyPath  
    oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    If strValue = "1" then  
       oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, "ShowIcon", dwValue  
    End if
Next
Wscript.Echo "Done!"  
Iwan
Iwan 25.06.2009 um 11:51:54 Uhr
Goto Top
hallo und danke für die Antwort face-wink
ich habe eine Lösung in VBS gefunden und unten gepostet
60730
60730 25.06.2009 um 11:52:27 Uhr
Goto Top
Servus Ivan,

ich sags mal ehrlich ;-(...
01.@echo off & setlocal
du weißt sicher, wie ich dazu stehe face-wink

Ich würde es (den Bock) "so" suchen...

bzw: schritt 4 schritt immer einen drauf setzen..
und ganz sm schluß kommen in C:\script\reg\123.nix.txt die Fundstücke heraus, bei denen Show icon nicht da ist. Und dort dann via reg add das show Icon reinzuschreiben... face-wink

:@echo off & 
setlocal 
set "regkey=HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"  
reg query "%regkey%" /s |find "\Connection">C:\script\reg\123.txt  
for /f %%i in (C:\script\reg\123.txt) do reg query %%i /s| find "IpCheckingEnabled"  
for /f %%i in (C:\script\reg\123.txt) do reg query %%i /s |find "IpCheckingEnabled" && reg query %%i /s| find "ShowIcon" && echo %%i >C:\script\reg\123.ini ||echo %%i>C:\script\reg\123.nix.txt  

Gruß


edit jajaja - kaum schreibt man nicht ungefähr und ungefährlicher / neudeutsch 4 getestet --- kommt der Bastla und der Ivan..../ edit
Iwan
Iwan 25.06.2009 um 12:36:58 Uhr
Goto Top
trotzdem danke für deinen Beitrag face-wink
60730
60730 25.06.2009 um 12:44:27 Uhr
Goto Top
Zitat von @Iwan:
trotzdem danke für deinen Beitrag face-wink

Danke für deine frage . denn ich mach das mit Kixtart - weil es zu NT Zeiten noch kein Reg.exe gab und hin und wieder ein "altes" Problem mit neuen Werkzeugen lösen - gehört ja auch zum lernprozess dazu face-wink

Gruß und schön, daß du nicht nur fragst, sondern dich auch alternativ selber drum bemühst - (obwohl das im Bereich von B & B) ja immer ein Lauf mit der Zeit ist - bis eine "saubere" Lösung von einem der beiden B.s kommt) - oder manchmal / meistens überschlagen sich die beiden ja auch face-wink
Und an dieser Stelle auch ein dickes fettes Danke an die beiden - und andere ungenannte - die wissen, daß Sie gemeint sein face-wink
bastla
bastla 25.06.2009 um 17:41:51 Uhr
Goto Top
@timobeil
Ich fühle mich einfach mal angesprochen (obwohl "B & B" ja eigentlich "Biber & Batch" und "Bereich" zweifelsohne "Biber-Reich" heißen müsste face-wink) und sage "Danke für's Danke". face-smile

Anmerkung zu:
meistens überschlagen sich die beiden ja auch
Also ich zumindest habe meinen letzten Überschlag (ok, eigentlich war's nur eine "Rolle seitwärts") 1980 mit einem VW-Käfer absolviert ... face-wink


Grüße
bastla