cbli
Goto Top

Wert in Registry per Batch ändern den User über Abfrage eingibt

Hallo Alle

Ich brauche noch einen letzten Schubs damit meine Batch funktioniert.
Ich möchte einen Registry Wert (Win XP) per Batch ändern.
Dieser Wert soll vorher über die Batch (Usereingabe) abgefragt werden und danach an die reg datei als dword wert übergeben werden.
Die Usereingabe per Batch funktioniert schon,wie ich per Batch die Registry ändern kann weiss ich auch, ich hab nur keinen Plan wie ich den Wert den der User eingibt an die reg datei übergeben kann

Beispiel:

Inhalt der Reg Datei:


REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"DisablePagingExecutive"=dword:00000001


Ich möchte nun erreichen,daß der dword Wert durch den Wert den der User bei der Abfrage eingibt ersetzt wird und danach die Reg Datei in die Registry geschrieben wird.
Wie erreiche ich eine solche Übergabe ?


Vielen Dank für die Hilfe

Gruß
Claus

Content-Key: 69208

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: schregi82
schregi82 Sep 21, 2007 at 12:18:21 (UTC)
Goto Top
du legst dir halt die möglichen werte unter wert1 - 3.reg ab und machst das über eine abfrage, früher choice:

echo off
:start
set /P X= (1) Wert eins, (2) Wert zwei, (3) Wert 3
if /I "%X%"=="1" goto :1  
if /I "%X%"=="2" goto :2  
if /I "%X%"=="3" goto :3  
 
:1
regedit /s LW:\Pfad\Wert1.reg
goto weiter 

:2
regedit /s LW:\Pfad\Wert2.reg
goto weiter 
 
:3
regedit /s LW:\Pfad\Wert3.reg
goto weiter 
 
:weiter 

habs zwar nicht getestet, müsste aber funktionieren
eine direkte eingabe des wertes wird meiner meinung nicht funktionieren.
Member: Logan000
Logan000 Sep 21, 2007 at 12:21:02 (UTC)
Goto Top
Ich würdes das als VBS realisieren.
Set WshShell=WScript.CreateObject("WScript.Shell")  

Const RegKey = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive"  

value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen  

' In RegSchreiben  
WshShell.RegWrite RegKey , value , "REG_DWORD"  
Member: cbli
cbli Sep 21, 2007 at 12:44:41 (UTC)
Goto Top

du legst dir halt die möglichen werte
unter wert1 - 3.reg ab und machst das
über eine abfrage, früher choice:

echo off
:start
set /P X= (1) Wert eins, (2) Wert zwei, (3)
Wert 3
if /I "%X%"=="1" goto
:1
if /I "%X%"=="2" goto
:2
if /I "%X%"=="3" goto
:3

:1
regedit /s LW:\Pfad\Wert1.reg
goto weiter

:2
regedit /s LW:\Pfad\Wert2.reg
goto weiter

:3
regedit /s LW:\Pfad\Wert3.reg
goto weiter

:weiter

habs zwar nicht getestet, müsste aber
funktionieren
eine direkte eingabe des wertes wird meiner
meinung nicht funktionieren.


Danke
Das wäre natürlich eine Möglichkeit.
Member: cbli
cbli Sep 21, 2007 at 12:47:14 (UTC)
Goto Top
Ich würdes das als VBS realisieren.
> Set
> WshShell=WScript.CreateObject("WScript.Shell")  
> 
> Const RegKey =
> "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session  
> Manager\Memory
> Management\DisablePagingExecutive"  
> 
> value = inputbox("Bitte Wert  
> eingaben","DisablePagingExecutive")  
> ' Wert abfragen  
> 
> ' In RegSchreiben  
> WshShell.RegWrite RegKey , value ,
> "REG_DWORD"  
> 


Danke erstmal.
Deine Lösung würde mir sehr gefallen, leider hats nach 20 min probieren
nicht geklappt.
Er ändert den Wert nicht ab über das Script.
Wäre super wenn du es nochmal überprüfen könntest oder ich bin einfach auch nur zu doof,kann auch sein.

Gruß´
Claus
Member: schregi82
schregi82 Sep 21, 2007 at 13:37:36 (UTC)
Goto Top
Ich will logan ja nicht die show stellen face-wink - aber bei mir funkts.

hast du auch das script in eine separate datei eingefügt ? zb. registry.vbs ?


INHALT REGISTRY.VBS

> Set
> WshShell=WScript.CreateObject("WScript.Shell")  
> 
> Const RegKey =
> "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session  
> Manager\Memory
> Management\DisablePagingExecutive"  
> 
> value = inputbox("Bitte Wert  
> eingaben","DisablePagingExecutive")  
> ' Wert abfragen  
> 
> ' In RegSchreiben  
> WshShell.RegWrite RegKey , value ,
> "REG_DWORD"  

INHALT DEIN BATCHFILE .BAT

 
.....

echo off
registry.vbs 
 
....


wobei die beiden dateien nun im selben ordner sein müssen.
batch und vbs verträgt sich nicht wirklich in einer datei face-wink
Member: cbli
cbli Sep 21, 2007 at 15:03:35 (UTC)
Goto Top

Ich will logan ja nicht die show stellen face-wink
- aber bei mir funkts.


Bei mir jetzt auch,hatte in meiner Dämlichkeit einen Rechtschreibfehler übersehen.
Interessant wäre noch ob man den Bereich der zulässigen Werte irgendwie einschränken könnte.
Also z.B

nur Zahlen zulässig
oder nur Zahlen im Bereich von x bis y
oder nur Text
oder auch nur YES or NO

Ansonsten nochmals vielen Dank für eure Hilfe

Gruß
Claus
Member: miniversum
miniversum Sep 23, 2007 at 12:12:28 (UTC)
Goto Top
Interessant wäre noch ob man den Bereich der zulässigen Werte irgendwie einschränken könnte.
Also z.B

nur Zahlen zulässig
oder nur Zahlen im Bereich von x bis y
oder nur Text
oder auch nur YES or NO

Klar geht das. Ersetze/Ergänze das:
value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen
durch:
'nur Zahlen zulässig
value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen
if isnumeric(value) = false then
value = 0
end if

'nur Zahlen im Bereich von x bis y
value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen
if isnumeric(value) = true then
if value <= x and value >= y then
value = 0
end if
end if

'nur Text
value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen
if isnumeric(value) = true then
value = "War ne Zahl"
end if

'nur YES or NO
value = msgbox("Bitte Wert eingaben",vbyesno) ' Wert abfragen
if value = vbyes then
value = 1
else
value = 0
end if

miniversum
Member: cbli
cbli Sep 24, 2007 at 13:44:56 (UTC)
Goto Top
> 'nur Zahlen zulässig
> value = inputbox("Bitte Wert
eingaben","DisablePagingExecutive")
' Wert abfragen
> if isnumeric(value) = false then
> value = 0
> end if


Habe jetzt folgendes Script gebastelt, welches auch funktioniert bis auf 1 Kleinigkeit


Set WshShell=WScript.CreateObject("WScript.Shell")

Const RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDll"

value = inputbox("Bitte 1 für Aktivieren oder 0 für Deaktivieren eingeben","Dll´s immer aus dem Speicher entladen") ' Wert abfragen
if isnumeric(value) = false then
value = 3
end if
if value = 1 then
WshShell.RegWrite RegKey , value , "REG_DWORD"
Positiv = msgbox("Die Funktion wurde aktiviert")
else
if value = 0 then
WshShell.RegWrite RegKey , value , "REG_DWORD"
Negativ = msgbox("Die Funktion wurde deaktiviert")
else
Fehler = msgbox ("Bitte gültigen Wert eingeben")
end if
end if


Wenn ich bei der Inputbox auf abbrechen klicke deaktiviert er die Funktion und ich bekomme auch das entsprechende
Infofenster eingeblendet.
Wie kann ich das unterbinden ?
Klicke ich auf ok, bekomme ich die Fehler msgbox.
Hat das was mit errorlevel zu tun ?

Vielen Dank

Gruß
Claus

PS: Ich habe seither mit Batches gearbeitet und versuche mich gerade mit VBS,bin also noch absoluter Neuling.
Member: Logan000
Logan000 Sep 24, 2007 at 14:00:48 (UTC)
Goto Top
Wenn ich bei der Inputbox auf abbrechen klicke deaktiviert er die Funktion und ich
bekomme auch das entsprechende Infofenster eingeblendet.
Wie kann ich das unterbinden ?

Gibst du nichts ein (Abbrechen) dann ist value keine zahl.
durch isnumeric(value) wird value in 0 umgewandelt.

Prüf vorher auf <>""

value = inputbox("Bitte 1 für Aktivieren oder 0 für Deaktivieren eingeben","Dll´s immer aus dem Speicher entladen") ' Wert abfragen  
If value<>"" Then  
    ...... 
end if 
Member: cbli
cbli Sep 24, 2007 at 14:57:23 (UTC)
Goto Top
Prüf vorher auf <>""


value = inputbox("Bitte 1 für
Aktivieren oder 0 für Deaktivieren
eingeben","Dll´s immer aus
dem Speicher entladen") ' Wert
abfragen
If value<>"" Then
......
end if

So hats schließlich funktioniert

If value="" then
abbrechen = msgbox ("Das Script wird jetzt beendet")
WScript.Quit
else
end if

If value<>"" Then

War das korrekt so und hab ich um 4 Ecken gedacht ?
Hat so nicht funktioniert oder gibts da noch ne Lösung ?

Vielen Dank für deine Hilfe.

Gruß
Claus