code: func GetLongPathName(path string) (string, error) {
  	// See https://groups.google.com/forum/#!topic/golang-dev/1tufzkruoTg
  	p := syscall.StringToUTF16(path)
  	b := p // GetLongPathName says we can reuse buffer
  	n, err := syscall.GetLongPathName(&p[0], &b[0], uint32(len(b)))
  	if err != nil {
  		return "", err
  	}
  	if n > uint32(len(b)) {
  		b = make([]uint16, n)
  		_, err = syscall.GetLongPathName(&p[0], &b[0], uint32(len(b)))
  		if err != nil {
  			return "", err
  		}
  	}
  	return syscall.UTF16ToString(b), nil
  }
docs: // GetLongPathName converts Windows short pathnames to full pathnames.
  // For example C:\Users\ADMIN~1 --> C:\Users\Administrator.
  // It is a no-op on non-Windows platforms