newbie1
Goto Top

Standardbrowser ändern

Hallo Forenteilnehmer,
ich suche Unterstützung für die Umsetzung von folgendem Anliegen.
- per Powershell den Standardbrowser von Edge auf Internet Explorer ändern
- Betriebssystem Windows 10 Pro

Ich habe im Internet zwar einiges gefunden, aber eben nicht das was ich wollte.

Ich weiss das es den Parameter Start-Process in Powershell gibt, aber ich weiss nicht wie ich es umsetzen könnte.

Über eutre Unterstützunbg wäre ich echt dankbar.

Danke und Grüße

Content-Key: 466084

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: aqui
aqui Jun 26, 2019 at 08:12:52 (UTC)
Goto Top
Internet Explorer...?? Nicht dein Ernst oder ? Das wäre heutzutage tödlich mit dem Angriffspotential auf diesen alten und unsupporteten Browser.
Wenn, nimmt man keinen der MS Browser sondern FF oder Chrome.
Nur mal nebenbei....
Member: Penny.Cilin
Penny.Cilin Jun 26, 2019 at 08:22:01 (UTC)
Goto Top
Zitat von @aqui:

Internet Explorer...?? Nicht dein Ernst oder ? Das wäre heutzutage tödlich mit dem Angriffspotential auf diesen alten und unsupporteten Browser.
Der ist leider aber immer noch weitverbreitet und auch bei Windows 10 dabei.
Wenn, nimmt man keinen der MS Browser sondern FF oder Chrome.
Nun ja, wenn man Chrome in Unternehmen als Standardbrowser einsetzt, sollte einem schon klar sein, wer oder was Google ist.
Meine Empfehlung geht zu Mozillas Firefox. Es gab hierzu in der c't mehrere Artikel dazu, speziell in Bezug EU-DSGVO.
Nur mal nebenbei....
...nur mal so meine Meinung.

Gruss Penny.
Member: erikro
erikro Jun 26, 2019 at 09:39:33 (UTC)
Goto Top
Moin,

guck mal hier:
https://stackoverflow.com/questions/17536405/cant-set-chrome-as-default- ...

Ansonsten kann ich @aqui nur zustimmen. Wenn MS-Browser, dann eher Edge als IE. Besser FF oder Opera. Chrome würde ich auch nicht unbedingt nehmen.

hth

Erik
Member: newbie1
newbie1 Jun 26, 2019 at 10:31:54 (UTC)
Goto Top
Hallo Forenteilnehmer,

danke für eure Infos.

Von dieser Seite her habe ich es natürlich noch nicht betrachtet. Ich gebe euch recht mit dem IE.
Werde auch den FF einsetzen.

@erikro: Werde mir den Link mal in Augenschein nehmen.

Ich melde mich wieder. face-wink
Member: newbie1
newbie1 Jun 26, 2019 at 10:53:19 (UTC)
Goto Top
Folgender Pfad wurde angegeben: HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice

Was bedeutet: {0}

Bei mir schreibt er leider nichts in die Registry, daher wollte ich gerne wissen was das bedeutet.
Member: erikro
erikro Jun 26, 2019 at 11:06:06 (UTC)
Goto Top
Moin,

Zitat von @newbie1:
Folgender Pfad wurde angegeben: HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice

Was bedeutet: {0}

Schauen wir uns mal den Quellcode des Skripts an:

$regKey      = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  

Hier steht {0} in der Zuweisung der Variablen. Das ist eine der genialen Funktionen der PS. Stehen in einer Variablen solche Ausdrücke in geschweiften Klammern, dann kann ich sie mit Hilfe des f-Operators mit den Werten eines Arrays ersetzen. Hier gibt es nur die 0, so dass auch das Array nur ein Element hat.

    $regKeyFtp   = $regKey -f 'ftp'  
    $regKeyHttp  = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  

Und hier wird der Platzhalter {0} mit verschiedenen Werten gefüllt. In der Variablen $regKeyFtp steht also nicht mehr der Pfad mit der {0}, sondern da steht jetzt:

HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoice

Und das ist der Key, in dem die Zuweisung des Protokolls zur Anwendung steht.

Mehr dazu findest Du hier:
https://ss64.com/ps/syntax-f-operator.html

hth

Erik
Member: Penny.Cilin
Penny.Cilin Jun 26, 2019 updated at 11:19:22 (UTC)
Goto Top
Zitat von @erikro:

Moin,

guck mal hier:
https://stackoverflow.com/questions/17536405/cant-set-chrome-as-default- ...

Ansonsten kann ich @aqui nur zustimmen. Wenn MS-Browser, dann eher Edge als IE. Besser FF oder Opera. Chrome würde ich auch nicht unbedingt nehmen.
Opera fällt auch flach, weil der basiert auf Chromium. Also auch nicht besser als Chrome. Bleibt somit Firefox übrig.

hth

Erik
Gruss Penny.
Member: erikro
erikro Jun 26, 2019 at 11:24:08 (UTC)
Goto Top
Naja, Chromium ist nicht Chrome. face-wink Der wesentliche Unterschied ist, dass Chromium Open Source ist und Chrome eben nicht.
Member: Penny.Cilin
Penny.Cilin Jun 26, 2019 at 11:26:44 (UTC)
Goto Top
Die Basis ist aber dieselbe. Heißt die Datenübermittlung an Google ist auch in Chromium enthalten.
Member: newbie1
newbie1 Jun 26, 2019 at 11:36:58 (UTC)
Goto Top
Hallo Erik,

besten Dank, das habe ich nicht gewusst das es so ist.

Was ich nicht verstehe, warum er mir die Einträge für http und https nicht in die Registry schreibt.

Kann man via Powershell den hash und den ProgID-Wert ermitteln?

Vielen Dank im voraus.
Member: erikro
erikro Jun 26, 2019 at 11:48:39 (UTC)
Goto Top
Zitat von @newbie1:
besten Dank, das habe ich nicht gewusst das es so ist.

Gerne

Was ich nicht verstehe, warum er mir die Einträge für http und https nicht in die Registry schreibt.

Poste mal Dein Skript. Antwort gibt es von mir allerdings erst morgen wieder. Ich muss jetzt los.
Member: newbie1
newbie1 Jun 26, 2019 at 12:34:19 (UTC)
Goto Top
Function Restart {
    Write-Output "Restarting..."  
    Restart-Computer
}

Function ChangeTheDefaultBrowser {
    param($defaultBrowser)

    $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
    $regKeyHttp = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  

    switch -Regex ($defaultBrowser.ToLower()) {

        # Mozilla Firefox
        # https://www.mozilla.org/
        'ff|firefox' {  
            Write-Output "`nChanging to Firefox as the default browser..."  
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash yWnRoYQTfbs=
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash IhKJ36zo2D8=
            break
        }

    } 

 }
    param($defaultBrowser)

    $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
    #$HKLMregKey = "Computador\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\" 
    $regKeyHttp = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  

    switch -Regex ($defaultBrowser.ToLower()) {
        # Why, Mister Anderson?! Why?!
        # Microsoft Edge
        # https://www.microsoft.com/pt-br/windows/microsoft-edge
        'me|edge' {  
            Write-Output "`nChanging back to Edge..."  
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId AppX90nv6nhay5n6a98fnetv7tpk64pp35es
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash 1cwyZ2KB040=
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId AppX90nv6nhay5n6a98fnetv7tpk64pp35es
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash kQz/gLoO7oo=
            break
        }
    }
}

# Uncomment one of the lines below
ChangeTheDefaultBrowser ff

Write-Host "`n Changes made for the current user"  
# Wait for keypress
Write-Host "`n Is necessary to restart your computer"  
WaitForKey
# Restart computer
Restart
Member: erikro
erikro Jun 27, 2019 at 07:48:15 (UTC)
Goto Top
Moin,

Ich schreibe das mal als Kommentar in Deinen von mir zitierten Code. Damit Du es besser findest, sind die Kommentare in ########## eingeschlossen.

Zitat von @newbie1:

> Function ChangeTheDefaultBrowser {
>     param($defaultBrowser)
> 
>     $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
>     $regKeyHttp = $regKey -f 'http'  
>     $regKeyHttps = $regKey -f 'https'  
> 
>     switch -Regex ($defaultBrowser.ToLower()) {
> 
>         # Mozilla Firefox
>         # https://www.mozilla.org/
>         'ff|firefox' {  
>             Write-Output "`nChanging to Firefox as the default browser..."  
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId FirefoxURL-308046B0AF4A39CB
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash yWnRoYQTfbs=
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId FirefoxURL-308046B0AF4A39CB
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash IhKJ36zo2D8=
>             break
>         }
> 
>     }  ########## Hier machst Du die Klammer von switch zu früh zu. ##########
> 
>  } ########## Hier machst Du die Klammer der Funktion zu früh zu. Damit ist die Funktion ChangeTheDefaultBrowser beendet. ##########
>     param($defaultBrowser) ########## Der Param-Block darf nur einmal vorkommen und nur am Anfang des Skripts bzw. der Funktion stehen. Gibt das keine Fehlermeldung? ##########
> 
>     $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
>     #$HKLMregKey = "Computador\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\" 
>         ########## No se usa idiomas diferentes a ingles en la programación. ;-) ##########
>     $regKeyHttp = $regKey -f 'http'  
>     $regKeyHttps = $regKey -f 'https'  
> 
>     switch -Regex ($defaultBrowser.ToLower()) { ########## Das weg und dafür die Klammer vom ersten Switch erst nach dem letzten Anweisungsblock schließen. ##########
>         # Why, Mister Anderson?! Why?! ########## Good question. ;-) ##########
>         # Microsoft Edge
>         # https://www.microsoft.com/pt-br/windows/microsoft-edge
>         ########## Aja, brasileros. ;-) ##########
>         'me|edge' {  
>             Write-Output "`nChanging back to Edge..."  
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId AppX90nv6nhay5n6a98fnetv7tpk64pp35es
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash 1cwyZ2KB040=
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId AppX90nv6nhay5n6a98fnetv7tpk64pp35es
>             Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash kQz/gLoO7oo=
>             break
>         }
>     }
> }
> 
> # Uncomment one of the lines below
> ChangeTheDefaultBrowser ff
> 
> Write-Host "`n Changes made for the current user"  
> # Wait for keypress
> Write-Host "`n Is necessary to restart your computer"  
> WaitForKey
> # Restart computer
> Restart

Guck Dir das nochmal an, damit Du switch richtig verstehst:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Liebe Grüße

Erik
Member: newbie1
newbie1 Jun 28, 2019 updated at 07:07:59 (UTC)
Goto Top
Ich habe das ganze nochmal überarbeitet und festgestellt, das ich die Switchfunktion gar nicht benötige da ich ja nur eine Browser zur Auswahl habe.

In dem Beispiel [... Standardbrowser setzen] werden ja alle möglichen Browser verarbeitet.

Mein Script sieht so aus:
Function Restart {
    Write-Output "Restarting..."  
    Restart-Computer
}

Function ChangeTheDefaultBrowser {
    param($defaultBrowser)

    $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
    $regKeyHttp = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  
		
        # Mozilla Firefox
        # https://www.mozilla.org/
        
            Write-Output "`nChanging to Firefox as the default browser..."  
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash yWnRoYQTfbs=
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash IhKJ36zo2D8=  
        
    } 

# Restart computer
Restart

Er schreibt keine Fehler, aber es passiert auch nichts.

Wo ist hier nur der Fehler? face-sad
Member: erikro
erikro Jun 28, 2019 at 07:13:45 (UTC)
Goto Top
Moin,

Du rufst die Funktion nicht auf. Schreib mal in die vorletzte Zeile
ChangeTheDefaultBrowser

Und den param-Block brauchst Du nicht mehr, da Du ja nur einen Browser hast.

Liebe Grüße

Erik
Member: newbie1
newbie1 Jun 28, 2019 at 12:24:01 (UTC)
Goto Top
Hallo,

Zitat von @erikro:

Moin,

Du rufst die Funktion nicht auf. Schreib mal in die vorletzte Zeile
> ChangeTheDefaultBrowser
> 

Vielen Dank, dann weiss ich es für's nächste mal. face-smile

Habe das Script so angepasst:
Function Restart 
{
    Write-Output "Restarting..."  
    Restart-Computer
}

Function ChangeTheDefaultBrowser 
{
    
    $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
    $regKeyHttp = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  
		
        # Mozilla Firefox
        # https://www.mozilla.org/
      
            Write-Output "`nChanging to Firefox as the default browser..."  
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttp  -name Hash yWnRoYQTfbs=
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name ProgId FirefoxURL-308046B0AF4A39CB
            Set-ItemProperty -Force -PassThru -Verbose $regKeyHttps -name Hash IhKJ36zo2D8=     
} 

ChangeTheDefaultBrowser

Write-Host "`nChanges made for the current user"  

# Restart computer
Restart

Ich bekomme auch folgende Info angezeigt:
install

Aber leider schreibt er mir nichts in die Registry und der Standardbrowser wird auch nicht geändert.
Ich verstehe nicht warum!!
Member: erikro
erikro Jun 28, 2019 at 12:33:55 (UTC)
Goto Top
Unter welchem User führst Du das denn aus?
Member: newbie1
newbie1 Jun 28, 2019 at 14:27:46 (UTC)
Goto Top
Zitat von @erikro:

Unter welchem User führst Du das denn aus?

als lokaler Admin
Member: erikro
erikro Jul 01, 2019 at 06:42:22 (UTC)
Goto Top
Dann änderst Du den Eintrag für den lokalen Admin. face-wink Du musst das im Userkontext des Users ausführen, dessen Einträge Du ändern willst. Der Key heißt HKey Current User. Es wird also immer der User geändert, in dessen Kontext das ausgeführt wird.
Member: newbie1
newbie1 Jul 05, 2019 at 13:06:02 (UTC)
Goto Top
Hallo Eriko,

sorry die verspätete Rückantwort.

Ich habe es jetzt nur mal als User ausgeführt.
Er schreibt mir keine Fehler. Es wird laut Powershell auch alles ausgeführt, aber in der Registry stehen noch die alten Einträge.

Beim testen musste ich feststellen, das Edge immer noch gesetzt ist. face-sad

Es funktioniert weder als loksler Admin noch als Wurstbrotuser.

Hat jemand noch einen Vorschlag?
Member: newbie1
newbie1 Jul 05, 2019 at 14:28:30 (UTC)
Goto Top
Damit klappt es:
Function Restart 
{
    Write-Output "Restarting..."  
    Restart-Computer
}

Function ChangeTheDefaultBrowser 
{
    
    $regKey = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"  
    $regKeyHttp = $regKey -f 'http'  
    $regKeyHttps = $regKey -f 'https'  
		
        # Mozilla Firefox
        # https://www.mozilla.org/
      
            Write-Output "`nChanging to Firefox as the default browser..."  
            Set-ItemProperty $regKeyHttp -name ProgId -value FirefoxURL-308046B0AF4A39CB -force
            Set-ItemProperty $regKeyHttp -name Hash -value yWnRoYQTfbs= -force
            Set-ItemProperty $regKeyHttps -name ProgId -value FirefoxURL-308046B0AF4A39CB -force
            Set-ItemProperty $regKeyHttps -name Hash -value IhKJ36zo2D8= -force    
} 

ChangeTheDefaultBrowser

Write-Host "`nChanges made for the current user"  

# Restart computer
Restart

Nachdem Neustart setzt er aber wieder den Regschlüssel für Micrposoft Edge.

Welche Parameter gibt es da noch. face-smile

Besten Dank im Voraus.