5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-03 04:42:00 +08:00

[webviewloader] Prevent env variables and registry overrides from changing behaviour (#1771)

This commit is contained in:
stffabi 2022-08-22 07:37:00 +02:00 committed by GitHub
parent 3c69289013
commit 7e030f3f2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,6 +9,10 @@ import (
"golang.org/x/sys/windows"
)
func init() {
preventEnvAndRegistryOverrides(nil, nil)
}
var (
memOnce sync.Once
memModule winloader.Module
@ -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))),
@ -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))),
@ -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))
}