mirror of
https://github.com/golang/go
synced 2024-11-23 16:40:03 -07:00
registry: Explain how GetMUIStringValue works and where it falls short
GetMUIStringValue tries as a convenience to resolve string values even for pathless resource DLLs by searching the system directory (one of several paths used by the system's standard DLL search order algorithm). This would not be needed if regLoadMUIString searched for pathless DLLs itself, but it doesn't, instead it needs an absolute path, otherwise it will fail. This approach works fine for solving issue #12015 (handle localized time zone names; for which GetMUIStringValue was created) since tzres.dll that is used to resolve localized time zone names has no path in the registry but is located under the system directory. However, this approach will fail if a pathless DLL is located somewhere else than the system directory. Because of this limitation GetMUIStringValue may have to be revised in the future to allow for custom paths, possibly through another version of the function. See also: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724890%28v=vs.85%29.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx Change-Id: Ida66a0ef1928e0461ce248c795827902d785e6cd Reviewed-on: https://go-review.googlesource.com/13929 Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
de786965e6
commit
12663b4627
@ -131,6 +131,14 @@ func (k Key) GetMUIStringValue(name string) (string, error) {
|
||||
|
||||
err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
|
||||
if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path
|
||||
|
||||
// Try to resolve the string value using the system directory as
|
||||
// a DLL search path; this assumes the string value is of the form
|
||||
// @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320.
|
||||
|
||||
// This approach works with tzres.dll but may have to be revised
|
||||
// in the future to allow callers to provide custom search paths.
|
||||
|
||||
var s string
|
||||
s, err = ExpandString("%SystemRoot%\\system32\\")
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user