mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 00:09:56 +08:00
[webviewloader] Prevent env variables and registry overrides from changing behaviour (#1771)
This commit is contained in:
parent
3c69289013
commit
7e030f3f2b
@ -9,6 +9,10 @@ import (
|
|||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
preventEnvAndRegistryOverrides(nil, nil)
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
memOnce sync.Once
|
memOnce sync.Once
|
||||||
memModule winloader.Module
|
memModule winloader.Module
|
||||||
@ -71,6 +75,7 @@ func GetWebviewVersion(path string) (string, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
preventEnvAndRegistryOverrides(browserPath, nil)
|
||||||
var result *uint16
|
var result *uint16
|
||||||
res, _, err := memGetAvailableCoreWebView2BrowserVersionString.Call(
|
res, _, err := memGetAvailableCoreWebView2BrowserVersionString.Call(
|
||||||
uint64(uintptr(unsafe.Pointer(browserPath))),
|
uint64(uintptr(unsafe.Pointer(browserPath))),
|
||||||
@ -97,6 +102,8 @@ func CreateCoreWebView2EnvironmentWithOptions(browserExecutableFolder, userDataF
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
preventEnvAndRegistryOverrides(browserExecutableFolder, userDataFolder)
|
||||||
res, _, _ := memCreate.Call(
|
res, _, _ := memCreate.Call(
|
||||||
uint64(uintptr(unsafe.Pointer(browserExecutableFolder))),
|
uint64(uintptr(unsafe.Pointer(browserExecutableFolder))),
|
||||||
uint64(uintptr(unsafe.Pointer(userDataFolder))),
|
uint64(uintptr(unsafe.Pointer(userDataFolder))),
|
||||||
@ -121,3 +128,15 @@ func loadFromMemory() error {
|
|||||||
})
|
})
|
||||||
return err
|
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))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user