.reg mit VB erstellen
Hallo!
Bin recht neu hier und habe gleich mal eine Frage!
Ich habe für Kunden eine Batchdatei geschrieben, die UltraVNC installiert und konfiguriert.
Dabei wird auch eine .reg in die Registry importiert.
Da dies Installation immer das gleiche Passwort hat, wollte ich dem Kunden die Möglichkeit geben, dass er bei der Installation das Passwort selbst bestimmen kann.
Dazu wollte ich ein Script schreiben, was die vorhandene .reg öffnet, sich dem Kunden eine Eingabebox öffnet in der ein Platzhalter steht wie z.B. "Passwort hier eingeben", dort das Passwort, oder die Variable eingegeben wird und die veränderte .reg wieder gespeichert wird. Das Importieren der .reg erfolgt erst später im Script.
Die Installation der Batchdatei soll dann erst weiter laufen, wenn die Eingabebox geschlossen wurde.
Kann mir dabei jemand helfen?
Hier der Ablaufplan:
- install.bat anklicken
- Eingabebox öffnet sich "Bitte Passwort vergeben"
- Installation beginnt
- .reg wird importiert
- Setup fertig
Bin recht neu hier und habe gleich mal eine Frage!
Ich habe für Kunden eine Batchdatei geschrieben, die UltraVNC installiert und konfiguriert.
Dabei wird auch eine .reg in die Registry importiert.
Da dies Installation immer das gleiche Passwort hat, wollte ich dem Kunden die Möglichkeit geben, dass er bei der Installation das Passwort selbst bestimmen kann.
Dazu wollte ich ein Script schreiben, was die vorhandene .reg öffnet, sich dem Kunden eine Eingabebox öffnet in der ein Platzhalter steht wie z.B. "Passwort hier eingeben", dort das Passwort, oder die Variable eingegeben wird und die veränderte .reg wieder gespeichert wird. Das Importieren der .reg erfolgt erst später im Script.
Die Installation der Batchdatei soll dann erst weiter laufen, wenn die Eingabebox geschlossen wurde.
Kann mir dabei jemand helfen?
Hier der Ablaufplan:
- install.bat anklicken
- Eingabebox öffnet sich "Bitte Passwort vergeben"
- Installation beginnt
- .reg wird importiert
- Setup fertig
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44154
Url: https://administrator.de/contentid/44154
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Oli82!
Hilft Dir folgendes Grundgerüst:
Vorarbeiten: "Reg1.txt" und "Reg2.txt" erstellen - die Datei "Reg1.txt" enthält den ersten Teil der Settings bis unmittelbar vor den Platz des Passworts, die Datei "Reg2.txt" den Rest ab der nächsten Zeile.
Die Ergebnisdatei "Inst.reg" besteht dann aus: InhaltReg1.txtPasswortZeilenschaltungInhaltReg2.txt
Aufruf des Scripts im Batch mit
Zu überlegen wäre noch eine Abbruchmöglichkeit (mit leerem Passwort oder entsprechender Schaltfläche in der InputBox) und Rückmeldung über WScript.Quit(1) zur Auswertung des Errorlevels im Batch.
Die Pfade sollten auch noch variabel gestaltet werden.
HTH
bastla
Hilft Dir folgendes Grundgerüst:
'InstReg.vbs
sInstReg = "D:\Inst.reg"
sReg1 = "D:\Reg1.txt"
sReg2 = "D:\Reg2.txt"
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
sEingabeText = "Bitte gewünschtes Passwort eingeben!"
Do
sPW1 = InputBox(sEingabeText)
sEingabeText = "Eingaben stimmten nicht überein." & vbCrLF & "Bitte Passwort neu eingeben!"
sPW2 = InputBox("Bitte Passwort wiederholen!")
Loop Until sPW1 <> "" And (sPW1 = sPW2)
Set oInstReg = fso.OpenTextFile(sInstReg, 2, True)
Set oReg1 = fso.OpenTextFile(sReg1, 1)
Set oReg2 = fso.OpenTextFile(sReg2, 1)
oInstReg.Write oReg1.ReadAll & sPW1 & vbCrLF & oReg2.ReadAll
oInstReg.Close
oReg1.Close
oReg2.Close
set fso = Nothing
Die Ergebnisdatei "Inst.reg" besteht dann aus: InhaltReg1.txtPasswortZeilenschaltungInhaltReg2.txt
Aufruf des Scripts im Batch mit
CScript //nologo D:\InstReg.vbs
Zu überlegen wäre noch eine Abbruchmöglichkeit (mit leerem Passwort oder entsprechender Schaltfläche in der InputBox) und Rückmeldung über WScript.Quit(1) zur Auswertung des Errorlevels im Batch.
Die Pfade sollten auch noch variabel gestaltet werden.
HTH
bastla
Ich hätte zwar die Variante gewählt, nur eine Inst.reg mitzuliefern, in der als Passwort "StandardPW" steht.
Und diesen Text "StandardPW" gleichzeitig als Suchstring für ein Wechseln&Ersetzen verwendet, falls der Benutzer ein neues Passwort haben will.
Aber davon abgesehen... auch aus meiner Sicht ist die Frage mit bastla's Lösung vollständig beantwortet.
Und sollte mal schnellstens so einen grünen Haken bekommen.
Oder ist noch etwas offen, oli82?
Grüße
Biber
Und diesen Text "StandardPW" gleichzeitig als Suchstring für ein Wechseln&Ersetzen verwendet, falls der Benutzer ein neues Passwort haben will.
Aber davon abgesehen... auch aus meiner Sicht ist die Frage mit bastla's Lösung vollständig beantwortet.
Und sollte mal schnellstens so einen grünen Haken bekommen.
Oder ist noch etwas offen, oli82?
Grüße
Biber
@Biber
Etwas in der Art (mit VB natürlich viel schöner ):
Wie lang darf eigentlich der Inhalt einer Variablen sein?
Grüße
bastla
Etwas in der Art (mit VB natürlich viel schöner ):
...
set /p r=<Inst.reg
:VonVorne
echo Sie können jetzt ein neues Passwort vergeben.
echo.
echo Wollen Sie als Passwort "StandardPW" verwenden,
echo drücken Sie bitte zweimal nur die Eingabetaste!
echo.
set /p pw1=Bitte geben Sie das gewünschte Passwort ein:
set /p pw2=Geben Sie bitte das Passwort nochmals ein:
if [%pw1%] NEQ [%pw2%] cls & goto :VonVorne
echo %r:StandardPW=%pw1% > Inst.reg
...
Wie lang darf eigentlich der Inhalt einer Variablen sein?
Grüße
bastla
@bastla
Nein, nein... *lach*
Das geht schon in Ordnung mit einer VBS-Inputbox für den End-Benutzer...
Da wollte ich nun wirklich nicht hinarbeiten auf eine Lösung auf dem CMD-Prompt..*gg
Ich meinte es so:
'InstReg.vbs (Bibervariante)
sInstReg = "D:\Inst.reg"
sDefaultReg="D:\Default.reg"
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
sEingabeText = "Bitte gewünschtes Passwort eingeben!"
Do
sPW1 = InputBox(sEingabeText)
sEingabeText = "Eingaben stimmten nicht überein." & vbCrLF & "Bitte Passwort neu eingeben!"
sPW2 = InputBox("Bitte Passwort wiederholen!")
Loop Until sPW1 <> "" And (sPW1 = sPW2)
<b>Set oInstReg = fso.OpenTextFile(sInstReg, 2, True) 'Die wird neu angelegt
Set oDefaultReg = fso.OpenTextFile(sDefaultReg, 1) 'Die wird nur gelesen
oInstReg.Write Replace(oDefaultReg.ReadAll, "StandardPW", sPW1)</b>
oInstReg.Close
oDefaultReg.Close
set fso = Nothing
...hinterher habe ich IMMER eine Inst.reg - entweder als 1:1-Kopie der Default.reg ODER eben mit dem Passwort gemäß Benutzerwünschen.
Außerdem: im Batch würde es so nicht klappen, weil der CMD-Interperter kein "ReadAll"der ganzen Datei machen könnte... das "set /p-<" liest nur bis zum CRLF [oder bis chr(0)].
Zur zweiten Frage: Unter WinXP Pre-SP1 bin ich mal bei irgendeinem Spontan-Oneliner auf den Fehler "zu lange Eingabezeile" gelaufen bei na...so um die 2040 Zeichen.
Das dürfte auch die Grenze für den Inhalt einer Umgebungsvariablen sein.
Komplette Dateien oder das SP4 in eine Umgebungsvariable einlesen oder Binär-Inhalte wie in einem CLOB halten.... das geht mit CMD-Befehlen nicht.
Oder ist zumindest umständlich.
Grüße
Biber
@Biber
War auch nur Spaß ...
... und trotz meiner Ausflüge in Dein Revier bleibe ich lieber bei dem, was ich weniger nicht so gut kann.
Grüße
bastla
War auch nur Spaß ...
... und trotz meiner Ausflüge in Dein Revier bleibe ich lieber bei dem, was ich weniger nicht so gut kann.
Grüße
bastla