awiterra
Goto Top

Frage zu VB-Scripting

Hallo VBs mächtiges Volk face-smile,

spiele hinundwieder mit vbs anmeldescripts rum. Habe folgendes Script zur änderung der Sprach- und Regionseinstellungen erstellt:

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

WSHShell.regwrite "HKCU\Control Panel\International\iCountry", "49", "REG_SZ"
WSHShell.regwrite "HKCU\Control Panel\International\iCurrDigits", "2", "REG_SZ"
WSHShell.regwrite "HKCU\Control Panel\International\iCurrency", "3", "REG_SZ"
WSHShell.regwrite "HKCU\Control Panel\International\iDate", "1", "REG_SZ"
WSHShell.regwrite "HKCU\Control Panel\International\iDigits", "2", "REG_SZ"..................

Das Script funktioniert, sieht allerdings nicht schön aus, da sehr viele Registryeinträge gesetzt werden müssen. Kann ich das Script schöner aussehen lassen, oder kann ich ein komplettes Registry-Hive mit dem Script ändern? Bin für alle Vorschläge dankbar.

Gruß
Kommentar vom Moderator Biber am 13.08.2009 um 20:34:26 Uhr
Verschoben von "Windows" nach "Batch & Shell".

Content-ID: 122714

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

Ausgedruckt am: 27.11.2024 um 00:11 Uhr

bastla
bastla 13.08.2009 um 18:39:18 Uhr
Goto Top
Hallo awiterra!

Bis auf ein "Herausheben" des gleichbleibenden Teiles, also etwa
RegPath = "HKCU\Control Panel\International\"  

WSHShell.RegWrite RegPath & "iCountry", "49", "REG_SZ"  
WSHShell.RegWrite RegPath & "iCurrDigits", "2", "REG_SZ"  
WSHShell.RegWrite RegPath & "iCurrency", "3", "REG_SZ"  
WSHShell.RegWrite RegPath & "iDate", "1", "REG_SZ"  
WSHShell.RegWrite RegPath & "iDigits", "2", "REG_SZ"  
lässt sich nicht allzuviel machen - das Auslagern der zuzuweisenden Werte in ein Array und Abarbeiten des Ganzen per Schleife wäre zwar möglich, sähe dann aber etwa so aus:
RegPath = "HKCU\Control Panel\International\"  

Values = Array( _
"""iCountry"", ""49"", ""REG_SZ""", _  
"""iCurrDigits"", ""2"", ""REG_SZ"", _  
...
"""iDigits"", ""2"", ""REG_SZ""")  

For Each V In Values
    WSHShell.RegWrite RegPath & V
Next
- keine echte Verbesserung, würde ich meinen ...

Als Alternative (um tatsächlich ein komplettes Registry-Hive zu ändern) könntest Du den entsprechenden Zweig mit allen gewünschten Werten exportieren und dann per
RegFile = "\\Server\Share\Region.reg"  
WSHShell.Run "regedit /s " & RegFile, 0, True  
auf dem Zielrechner importieren.

Anmerkung: Alles ungetestet ...

Grüße
bastla
awiterra
awiterra 13.08.2009 um 19:47:49 Uhr
Goto Top
Hallo bastla, na das ist doch schonmal was face-smile
besten Dank für die schnelle Hilfe...

Gruß
awiterra
awiterra 20.08.2009 um 11:05:06 Uhr
Goto Top
Hab doch noch ein Anliegen: Beim ausführen der dritten Alternative bekomme ich einen Laufzeitfehler in Zeile 2, Zeichen 1. Als Fehler steht Objekt erforderlich "WSHShell".

Woran liegt das?

Gruß
bastla
bastla 20.08.2009 um 14:36:24 Uhr
Goto Top
Hallo awiterra!

So wie auch bei den anderen Beispielen habe ich vorausgesetzt, dass es bereits weiter oben im Script eine Zeile
Set WshShell = WScript.CreateObject("WScript.Shell")
gibt - falls diese also fehlen sollte, wäre die Fehlermeldung damit zu erklären.

Grüße
bastla
awiterra
awiterra 20.08.2009 um 19:32:09 Uhr
Goto Top
Jetzt, wo du es sagst face-smile

Danke nochmal...