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 Aug 13, 2009 um 18:34:26 Uhr
Verschoben von "Windows" nach "Batch & Shell".

Content-Key: 122714

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

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

Member: bastla
bastla Aug 13, 2009 at 16:39:18 (UTC)
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
Member: awiterra
awiterra Aug 13, 2009 at 17:47:49 (UTC)
Goto Top
Hallo bastla, na das ist doch schonmal was face-smile
besten Dank für die schnelle Hilfe...

Gruß
Member: awiterra
awiterra Aug 20, 2009 at 09:05:06 (UTC)
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ß
Member: bastla
bastla Aug 20, 2009 at 12:36:24 (UTC)
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
Member: awiterra
awiterra Aug 20, 2009 at 17:32:09 (UTC)
Goto Top
Jetzt, wo du es sagst face-smile

Danke nochmal...