Skip to content

Commit

Permalink
[webviewloader] Prevent env variables and registry overrides from cha…
Browse files Browse the repository at this point in the history
…nging behaviour (#1771)
  • Loading branch information
stffabi committed Aug 22, 2022
1 parent 3c69289 commit 7e030f3
Showing 1 changed file with 19 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import (
"golang.org/x/sys/windows"
)

func init() {
preventEnvAndRegistryOverrides(nil, nil)
}

var (
memOnce sync.Once
memModule winloader.Module
Expand Down Expand Up @@ -71,6 +75,7 @@ func GetWebviewVersion(path string) (string, error) {
}
}

preventEnvAndRegistryOverrides(browserPath, nil)
var result *uint16
res, _, err := memGetAvailableCoreWebView2BrowserVersionString.Call(
uint64(uintptr(unsafe.Pointer(browserPath))),
Expand All @@ -97,6 +102,8 @@ func CreateCoreWebView2EnvironmentWithOptions(browserExecutableFolder, userDataF
if err != nil {
return 0, err
}

preventEnvAndRegistryOverrides(browserExecutableFolder, userDataFolder)
res, _, _ := memCreate.Call(
uint64(uintptr(unsafe.Pointer(browserExecutableFolder))),
uint64(uintptr(unsafe.Pointer(userDataFolder))),
Expand All @@ -121,3 +128,15 @@ func loadFromMemory() error {
})
return err
}

func preventEnvAndRegistryOverrides(browserFolder, userDataFolder *uint16) {
// Setting these env variables to empty string also prevents registry overrides because webview2loader
// checks for existence and not for empty value
os.Setenv("WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER", "")
os.Setenv("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "")

// Set these overrides to the values or empty to prevent registry and external env overrides
os.Setenv("WEBVIEW2_RELEASE_CHANNEL_PREFERENCE", "0")
os.Setenv("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", windows.UTF16PtrToString(browserFolder))
os.Setenv("WEBVIEW2_USER_DATA_FOLDER", windows.UTF16PtrToString(userDataFolder))
}

0 comments on commit 7e030f3

Please sign in to comment.