i think the logic of decoding the bytes should be separate from the version check. in particular, there's no need for the magic constant "Windows Registry Editor" to be copy/pasted in twice. i recommend the following:

    try:
        file_contents = file_contents.decode("utf-16")
    except:
        pass  # we have ASCII text or something that's not a .reg file

    if not file_contents.startswith("Windows Registry Editor"):
        print "[-] Unable to properly decode .reg file: %s" % reg_file
        return []