windows/registry: mark string end with 0 before calling Windows ExpandEnvironmentStrings

Change-Id: I02bfcdeac44167d1dbeb15bcd5c82111fba3f527
Reviewed-on: https://go-review.googlesource.com/9234
Reviewed-by: Rob Pike <r@golang.org>
diff --git a/windows/registry/value.go b/windows/registry/value.go
index 074aa4d..1c1771d 100644
--- a/windows/registry/value.go
+++ b/windows/registry/value.go
@@ -119,15 +119,13 @@
 	if value == "" {
 		return "", nil
 	}
-	for i := 0; i < len(value); i++ {
-		if value[i] == 0 {
-			return "", errors.New("string cannot have 0 inside")
-		}
+	p, err := syscall.UTF16PtrFromString(value)
+	if err != nil {
+		return "", err
 	}
-	p := utf16.Encode([]rune(value))
 	r := make([]uint16, 100)
 	for {
-		n, err := expandEnvironmentStrings(&p[0], &r[0], uint32(len(r)))
+		n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
 		if err != nil {
 			return "", err
 		}