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

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

Frage Entwicklung Batch & Shell

Mitglied: cbli

cbli (Level 1) - Jetzt verbinden

21.09.2007, aktualisiert 24.09.2007, 10208 Aufrufe, 10 Kommentare

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
Mitglied: schregi82
21.09.2007 um 14:18 Uhr
du legst dir halt die möglichen werte unter wert1 - 3.reg ab und machst das über eine abfrage, früher choice:

01.
echo off 
02.
:start 
03.
set /P X= (1) Wert eins, (2) Wert zwei, (3) Wert 3 
04.
if /I "%X%"=="1" goto :1 
05.
if /I "%X%"=="2" goto :2 
06.
if /I "%X%"=="3" goto :3 
07.
  
08.
:1 
09.
regedit /s LW:\Pfad\Wert1.reg 
10.
goto weiter  
11.
 
12.
:2 
13.
regedit /s LW:\Pfad\Wert2.reg 
14.
goto weiter  
15.
  
16.
:3 
17.
regedit /s LW:\Pfad\Wert3.reg 
18.
goto weiter  
19.
  
20.
:weiter 

habs zwar nicht getestet, müsste aber funktionieren
eine direkte eingabe des wertes wird meiner meinung nicht funktionieren.
Bitte warten ..
Mitglied: Logan000
21.09.2007 um 14:21 Uhr
Ich würdes das als VBS realisieren.
01.
Set WshShell=WScript.CreateObject("WScript.Shell") 
02.
 
03.
Const RegKey = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive" 
04.
 
05.
value = inputbox("Bitte Wert eingaben","DisablePagingExecutive") ' Wert abfragen 
06.
 
07.
' In RegSchreiben 
08.
WshShell.RegWrite RegKey , value , "REG_DWORD"
Bitte warten ..
Mitglied: cbli
21.09.2007 um 14:44 Uhr

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.
Bitte warten ..
Mitglied: cbli
21.09.2007 um 14:47 Uhr
Ich würdes das als VBS realisieren.
01.
> Set 
02.
> WshShell=WScript.CreateObject("WScript.Shell") 
03.
>  
04.
> Const RegKey = 
05.
> "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session 
06.
> Manager\Memory 
07.
> Management\DisablePagingExecutive" 
08.
>  
09.
> value = inputbox("Bitte Wert 
10.
> eingaben","DisablePagingExecutive") 
11.
> ' Wert abfragen 
12.
>  
13.
> ' In RegSchreiben 
14.
> WshShell.RegWrite RegKey , value , 
15.
> "REG_DWORD" 
16.
> 

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
Bitte warten ..
Mitglied: schregi82
21.09.2007 um 15:37 Uhr
Ich will logan ja nicht die show stellen - aber bei mir funkts.

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


INHALT REGISTRY.VBS

01.
> Set 
02.
> WshShell=WScript.CreateObject("WScript.Shell") 
03.
>  
04.
> Const RegKey = 
05.
> "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session 
06.
> Manager\Memory 
07.
> Management\DisablePagingExecutive" 
08.
>  
09.
> value = inputbox("Bitte Wert 
10.
> eingaben","DisablePagingExecutive") 
11.
> ' Wert abfragen 
12.
>  
13.
> ' In RegSchreiben 
14.
> WshShell.RegWrite RegKey , value , 
15.
> "REG_DWORD"

INHALT DEIN BATCHFILE .BAT

01.
  
02.
..... 
03.
 
04.
echo off 
05.
registry.vbs  
06.
  
07.
....


wobei die beiden dateien nun im selben ordner sein müssen.
batch und vbs verträgt sich nicht wirklich in einer datei
Bitte warten ..
Mitglied: cbli
21.09.2007 um 17:03 Uhr

Ich will logan ja nicht die show stellen
- 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
Bitte warten ..
Mitglied: miniversum
23.09.2007 um 14:12 Uhr
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
Bitte warten ..
Mitglied: cbli
24.09.2007 um 15:44 Uhr
> '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.
Bitte warten ..
Mitglied: Logan000
24.09.2007 um 16:00 Uhr
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 <>""

01.
value = inputbox("Bitte 1 für Aktivieren oder 0 für Deaktivieren eingeben","Dll´s immer aus dem Speicher entladen") ' Wert abfragen 
02.
If value<>"" Then 
03.
    ......  
04.
end if 
Bitte warten ..
Mitglied: cbli
24.09.2007 um 16:57 Uhr
Prüf vorher auf <>""

<code>
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Datum per batch ändern in Tagen (2)

Frage von crawnby zum Thema Batch & Shell ...

IDE & Editoren
gelöst IP und DNS per Batch ändern (9)

Frage von andyw5 zum Thema IDE & Editoren ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...