This PR fixes the UserName character case bug (Issue #62) on Windows platforms. Where the UserName returned by environment variable or WindowsIdentity API is incorrect and reflects what the user typed in the RunAs command instead.
PS C:\> runas.exe /user:domain\userNaME pwsh.exe
# In new pwsh PowerShell shell, user name has wrong case (it should be 'UserName')
PS C:\> [System.Security.Principal.WindowsIdentity]::GetCurrent().Name.Split('\')[1]
userNaME
The UserName is used to encrypt data to avoid having plain text in some files (store configuration data), and also as a replacement for the no-password configuration (where file system protections are relied on for a less secure but more convenient configuration).
A consistent UserName is vital and if it is provided by the OS in different character casing, data cannot be decrypted and read.
Fix is to convert the provided UserName to all upper case to ensure consistent values. Fix also includes a fallback option to use the original character casing when reading old data (that hasn't been updated to the all upper case).
This PR fixes the UserName character case bug (Issue #62) on Windows platforms. Where the UserName returned by environment variable or WindowsIdentity API is incorrect and reflects what the user typed in the RunAs command instead.
The UserName is used to encrypt data to avoid having plain text in some files (store configuration data), and also as a replacement for the no-password configuration (where file system protections are relied on for a less secure but more convenient configuration). A consistent UserName is vital and if it is provided by the OS in different character casing, data cannot be decrypted and read.
Fix is to convert the provided UserName to all upper case to ensure consistent values. Fix also includes a fallback option to use the original character casing when reading old data (that hasn't been updated to the all upper case).