Firefox NTLM Authentification, VBScript um Werte zu ergänzen
Hallo Miteinander
Wie ihr sicher schon im Titel gesehen habt, habe ich ein Problem mit dem Programmieren eines VBScript.
Ich möchte folgendes machen:
Firefox erstellt auf dem Computer einen Profile und dort hat er das sogennannte prefs.js file.
Dort werden alle Änderungen gespeichert, die der Benutzer im Firefox vornimmt.
In dieser Datei muss ich ein Befehl hinzufügen oder abändern.
Also soll das Programm zuerst schauen ob der Befehl "network.automatic-ntlm-auth.trusted-uris" schon vorhanden ist oder nicht.
Ist er vorhanden, müssen Werte dem Befehl hinzugefügt werden, ohne das die vorhandenen gelöst werden.
z.B. steht "user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google");" und es muss z.B. Yahoo hinzugefügt werden.
Dann üsste das am schluss folgendermasse aussehen: user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google,Yahoo");
Noch dazu soll es nachschauen ob der Begriff nicht schon vorhanden ist. Es soll also nicht zwei Mal das gleiche stehen.
Ist es nicht vorhanden, soll es einfach den Befehl hinzufügen: user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google,Yahoo,Mozilla,usw.");
Ich hoffe ihr könnt mir helfen und falls ihr noch fragen habt, einfach fragen.
Gruss Sergio
Wie ihr sicher schon im Titel gesehen habt, habe ich ein Problem mit dem Programmieren eines VBScript.
Ich möchte folgendes machen:
Firefox erstellt auf dem Computer einen Profile und dort hat er das sogennannte prefs.js file.
Dort werden alle Änderungen gespeichert, die der Benutzer im Firefox vornimmt.
In dieser Datei muss ich ein Befehl hinzufügen oder abändern.
Also soll das Programm zuerst schauen ob der Befehl "network.automatic-ntlm-auth.trusted-uris" schon vorhanden ist oder nicht.
Ist er vorhanden, müssen Werte dem Befehl hinzugefügt werden, ohne das die vorhandenen gelöst werden.
z.B. steht "user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google");" und es muss z.B. Yahoo hinzugefügt werden.
Dann üsste das am schluss folgendermasse aussehen: user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google,Yahoo");
Noch dazu soll es nachschauen ob der Begriff nicht schon vorhanden ist. Es soll also nicht zwei Mal das gleiche stehen.
Ist es nicht vorhanden, soll es einfach den Befehl hinzufügen: user_pref("network.automatic-ntlm-auth.trusted-uris", "gs-galaxy,Google,Yahoo,Mozilla,usw.");
Ich hoffe ihr könnt mir helfen und falls ihr noch fragen habt, einfach fragen.
Gruss Sergio
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164567
Url: https://administrator.de/contentid/164567
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo sergio1993!
Zum Testen (es wird eine "prefs.js" im Testpfad "D:\TEMP" vorausgesetzt - siehe Zeile 26):
Die Zeilen 22 bis 27 dienen nur dem Testen und können dann später ersatzlos entfernt werden.
Grüße
bastla
Zum Testen (es wird eine "prefs.js" im Testpfad "D:\TEMP" vorausgesetzt - siehe Zeile 26):
Values = Array("gs-galaxy", "Google", "Yahoo", "Mozilla", "usw.")
Setting = "user_pref(""network.automatic-ntlm-auth.trusted-uris"""
Set fso = CreateObject("Scripting.FileSystemObject")
Set Sh = CreateObject("WScript.Shell")
'prefs.js suchen:
'Profilpfad ermitteln
FFPath = Sh.ExpandEnvironmentStrings("%Appdata%") & "\Mozilla\Firefox"
'"profiles.ini" einlesen ...
IniLines = Split(fso.OpenTextFile(FFPath & "\profiles.ini").ReadAll, vbCrLf)
'... und nach Zeile "Path=..." durchsuchen
For Each Line In IniLines
If Left(Line, 5) = "Path=" Then
FFProfilesPath = Trim(Mid(Line, 6))
Exit For
End If
Next
PrefsPath = FFPath & "\" & FFProfilesPath & "\prefs.js"
'falls keine "prefs.js" gefunden wurde, Abbruch
If Not fso.FileExists(PrefsPath) Then WScript.Quit 1
'#############################
'Ausgabe des Pfades
MsgBox PrefsPath
' zum Testen Kopie der "prefs.js" verwenden
PrefsPath = "D:\TEMP\prefs.js"
'#############################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
'... und nach dem gewünschten "Settings-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte isolieren
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Trim(Split(SettingLine, """")(3))
'alle gewünschten Werte durchgehen
For Each Value In Values
'Wert noch nicht vorhanden
If InStr(SettingValues, Value) = 0 Then
' ... daher: hinzufügen
SettingValues = SettingValues & "," & Value
End If
Next
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting & ", """ & SettingValues & """);"
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & _
Setting & ", """ & Join(Values, ",") & """);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
Grüße
bastla
Hallo bastla,
ich habe mich heute eine ganze Weile mit einer Lösung für ein ähnliches Problem herumgeschlagen. Nach dem ich fast fertig war, bin ich auf diesen Eintrag gestoßen. SUPER! Denn genau die Sache mit dem "network.automatic-ntlm-auth.trusted-uris" - Eintrag gilt auch für mich. Habe das oben dargestellte Skript genommen und alles funktioniert wunderbar wie beschrieben.
Allerdings benötige ich noch zwei weitere Einträge die überprüft bzw. geändert werden müssten. Dies sind boolsche Variablen und lauten
user_pref("network.automatic-ntlm-auth.allow-proxies", false);
und
user_pref("network.negotiate-auth.allow-proxies", false);
Also ähnlich wie bei sergio1993 soll die prefs.js auf die Einträge überprüft werden und falls nicht vorhanden ergänzt, bzw. falls vorhanden geändert werden. Da ich mit meiner Lösung sehr amateurhafte Arbeit geleistet habe, hoffe ich auf einen weiteren Tipp oder Hinweis. Wäre toll, wenn man dies noch irgendwie in das schon vorhandene Skript einbauen könnte.
Leider bin ich im VBScript schreiben ein absoluter Anfänger und muss mich erst einmal durch das schon vorhandene Skript durcharbeiten, um überhaupt zu verstehen an welcher Stelle was genau passiert. Daher wäre ich über jede Hilfe dankbar!
Gruß
doschtinator
ich habe mich heute eine ganze Weile mit einer Lösung für ein ähnliches Problem herumgeschlagen. Nach dem ich fast fertig war, bin ich auf diesen Eintrag gestoßen. SUPER! Denn genau die Sache mit dem "network.automatic-ntlm-auth.trusted-uris" - Eintrag gilt auch für mich. Habe das oben dargestellte Skript genommen und alles funktioniert wunderbar wie beschrieben.
Allerdings benötige ich noch zwei weitere Einträge die überprüft bzw. geändert werden müssten. Dies sind boolsche Variablen und lauten
user_pref("network.automatic-ntlm-auth.allow-proxies", false);
und
user_pref("network.negotiate-auth.allow-proxies", false);
Also ähnlich wie bei sergio1993 soll die prefs.js auf die Einträge überprüft werden und falls nicht vorhanden ergänzt, bzw. falls vorhanden geändert werden. Da ich mit meiner Lösung sehr amateurhafte Arbeit geleistet habe, hoffe ich auf einen weiteren Tipp oder Hinweis. Wäre toll, wenn man dies noch irgendwie in das schon vorhandene Skript einbauen könnte.
Leider bin ich im VBScript schreiben ein absoluter Anfänger und muss mich erst einmal durch das schon vorhandene Skript durcharbeiten, um überhaupt zu verstehen an welcher Stelle was genau passiert. Daher wäre ich über jede Hilfe dankbar!
Gruß
doschtinator
Hallo,
habe für mich jetzt doch eine funktionierende Lösung gefunden, die sehr an der obigen angelehnt ist. Ist unter Umständen so nicht perfekt programmiert, aber es funktioniert und das ist mir zuerst einmal am Wichtigsten
Values = Array("http://s1")
Setting = "user_pref(""network.automatic-ntlm-auth.trusted-uris"""
Setting2 = "user_pref(""network.automatic-ntlm-auth.allow-proxies"""
Setting3 = "user_pref(""network.negotiate-auth.allow-proxies"""
Set fso = CreateObject("Scripting.FileSystemObject")
Set Sh = CreateObject("WScript.Shell")
' #######################################################
'prefs.js suchen:
'Profilpfad ermitteln
FFPath = Sh.ExpandEnvironmentStrings("%Appdata%") & "\Mozilla\Firefox"
'"profiles.ini" einlesen ...
IniLines = Split(fso.OpenTextFile(FFPath & "\profiles.ini").ReadAll, vbCrLf)
'... und nach Zeile "Path=..." durchsuchen
For Each Line In IniLines
If Left(Line, 5) = "Path=" Then
FFProfilesPath = Trim(Mid(Line, 6))
Exit For
End If
Next
PrefsPath = FFPath & "\" & FFProfilesPath & "\prefs.js"
'falls keine "prefs.js" gefunden wurde, Abbruch
If Not fso.FileExists(PrefsPath) Then MsgBox "Datei prefs.js nicht vorhanden!", vbExclamation, "Fehlende prefs.js"
If Not fso.FileExists(PrefsPath) Then WScript.Quit 1
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' ########################################################
'... und nach dem gewünschten "Settings-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte isolieren
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Trim(Split(SettingLine, """")(3))
'alle gewünschten Werte durchgehen
For Each Value In Values
'Wert noch nicht vorhanden
If InStr(SettingValues, Value) = 0 Then
' ... daher: hinzufügen
SettingValues = SettingValues & "," & Value
End If
Next
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting & ", """ & SettingValues & """);"
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & _
Setting & ", """ & Join(Values, ",") & """);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' #############################################################
'... und nach dem gewünschten "Settings2-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting2) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte auslesen
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Split(SettingLine, ",") 'ergibt true); oder false); als Ausgabe
' Der Wert wird der Variablen bool übergeben
bool = (SettingValues(1))
' Falls die Variable den Wert true hat, wird dieser in false gedreht
if bool = " true);" then
bool = " false);"
End if
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting2 & "," & bool
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & "user_pref(""network.automatic-ntlm-auth.allow-proxies"", false);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' ##############################################################
'... und nach dem gewünschten "Settings3-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting3) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte auslesen
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Split(SettingLine, ",") 'ergibt true); oder false); als Ausgabe
' Der Wert wird der Variablen bool übergeben
bool = (SettingValues(1))
' Falls die Variable den Wert true hat, wird dieser in false gedreht
if bool = " true);" then
bool = " false);"
End if
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting3 & "," & bool
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & "user_pref(""network.negotiate-auth.allow-proxies"", false);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ##############################################################
MsgBox "Datei erfolgreich geändert!" , vbInformation ,"Ergänzung prefs.js"
habe für mich jetzt doch eine funktionierende Lösung gefunden, die sehr an der obigen angelehnt ist. Ist unter Umständen so nicht perfekt programmiert, aber es funktioniert und das ist mir zuerst einmal am Wichtigsten
Values = Array("http://s1")
Setting = "user_pref(""network.automatic-ntlm-auth.trusted-uris"""
Setting2 = "user_pref(""network.automatic-ntlm-auth.allow-proxies"""
Setting3 = "user_pref(""network.negotiate-auth.allow-proxies"""
Set fso = CreateObject("Scripting.FileSystemObject")
Set Sh = CreateObject("WScript.Shell")
' #######################################################
'prefs.js suchen:
'Profilpfad ermitteln
FFPath = Sh.ExpandEnvironmentStrings("%Appdata%") & "\Mozilla\Firefox"
'"profiles.ini" einlesen ...
IniLines = Split(fso.OpenTextFile(FFPath & "\profiles.ini").ReadAll, vbCrLf)
'... und nach Zeile "Path=..." durchsuchen
For Each Line In IniLines
If Left(Line, 5) = "Path=" Then
FFProfilesPath = Trim(Mid(Line, 6))
Exit For
End If
Next
PrefsPath = FFPath & "\" & FFProfilesPath & "\prefs.js"
'falls keine "prefs.js" gefunden wurde, Abbruch
If Not fso.FileExists(PrefsPath) Then MsgBox "Datei prefs.js nicht vorhanden!", vbExclamation, "Fehlende prefs.js"
If Not fso.FileExists(PrefsPath) Then WScript.Quit 1
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' ########################################################
'... und nach dem gewünschten "Settings-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte isolieren
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Trim(Split(SettingLine, """")(3))
'alle gewünschten Werte durchgehen
For Each Value In Values
'Wert noch nicht vorhanden
If InStr(SettingValues, Value) = 0 Then
' ... daher: hinzufügen
SettingValues = SettingValues & "," & Value
End If
Next
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting & ", """ & SettingValues & """);"
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & _
Setting & ", """ & Join(Values, ",") & """);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' #############################################################
'... und nach dem gewünschten "Settings2-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting2) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte auslesen
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Split(SettingLine, ",") 'ergibt true); oder false); als Ausgabe
' Der Wert wird der Variablen bool übergeben
bool = (SettingValues(1))
' Falls die Variable den Wert true hat, wird dieser in false gedreht
if bool = " true);" then
bool = " false);"
End if
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting2 & "," & bool
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & "user_pref(""network.automatic-ntlm-auth.allow-proxies"", false);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ########################################################
'"prefs.js" komplett in Array einlesen ...
PrefsLines = Split(fso.OpenTextFile(PrefsPath).ReadAll, vbCrLf)
' ##############################################################
'... und nach dem gewünschten "Settings3-String" durchsuchen
For i = 0 To UBound(PrefsLines)
If InStr(PrefsLines(i), Setting3) > 0 Then
'gefunden: Zeilennummer merken und Schleife verlassen
LineNo = i
Exit For
End If
Next
'Wenn Zeile bereits vorhanden war, ...
If LineNo <> 0 Then
'... gesamte Zeile auslesen
SettingLine = PrefsLines(LineNo)
'bereits vorhandene Werte auslesen
'(dazu Aufteilung der Zeile anhand der Anführungszeichen)
SettingValues = Split(SettingLine, ",") 'ergibt true); oder false); als Ausgabe
' Der Wert wird der Variablen bool übergeben
bool = (SettingValues(1))
' Falls die Variable den Wert true hat, wird dieser in false gedreht
if bool = " true);" then
bool = " false);"
End if
'Zeile neu zusammenbauen
PrefsLines(LineNo) = Setting3 & "," & bool
'gesamte "prefs.js" wieder aus Array zusammensetzen
PrefsLinesNew = Join(PrefsLines, vbCrLf)
Else
'gesuchte Zeile noch nicht vorhanden,
'daher mit allen gewünschten Werten neu erstellen
PrefsLinesNew = Join(PrefsLines, vbCrLf) & vbCrLf & "user_pref(""network.negotiate-auth.allow-proxies"", false);"
End If
'"prefs.js" schreiben
fso.CreateTextfile(PrefsPath).Write PrefsLinesNew
' ##############################################################
MsgBox "Datei erfolgreich geändert!" , vbInformation ,"Ergänzung prefs.js"