d24211cab2
readShortcut read the shortcut TargetPath via [Console]::Out.Write, which uses the system OEM code page by default. On Russian Windows (CP866) this encoded Cyrillic characters differently from UTF-8, so Go's string(output) produced a garbled path that never matched os.Executable, causing AutostartStatus to always report "shortcut points to another executable" for any install directory that contained non-ASCII characters. Fix: prepend [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false) to the readShortcut PowerShell script so the output is always UTF-8. Also harden sameWindowsPath against NTFS 8.3 short names: when a directory name contains spaces Windows assigns a short name (e.g. LOCALG~1 for "Local Git"), and the OS may use that form when launching from a Startup-folder shortcut. Add an os.SameFile fallback that compares paths by volume serial number and file index, which is immune to 8.3 vs long name differences as well as directory junction points. Add normalizeWindowsPath helper that strips quotes and the \?\ extended- length prefix before filepath.Clean so those variants compare equal to the plain path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>