docs: def ExpandWindowsUserEnvironmentVariables(data_string,
                                            knowledge_base,
                                            sid=None,
                                            username=None):
    r"""Take a string and expand windows user environment variables based.
  
    Args:
      data_string: A string, e.g. "%TEMP%\\LogFiles"
      knowledge_base: A knowledgebase object.
      sid: A Windows SID for a user to expand for.
      username: A Windows user name to expand for.
  
    Returns:
      A string with available environment variables expanded.
    """
    win_environ_regex = re.compile(r"%([^%]+?)%")
    components = []
    offset = 0
    for match in win_environ_regex.finditer(data_string):
      components.append(data_string[offset:match.start()])
      kb_user = knowledge_base.GetUser(sid=sid, username=username)
      kb_value = None
      if kb_user:
        kb_value = getattr(kb_user, match.group(1).lower(), None)
      if isinstance(kb_value, string_types) and kb_value:
        components.append(kb_value)
      else:
        components.append("%%%s%%" % match.group(1))
      offset = match.end()
  
    components.append(data_string[offset:])  # Append the final chunk.
    return "".join(components)