https://bugs.winehq.org/show_bug.cgi?id=49160
Bug ID: 49160 Summary: Unity: SystemInfo.deviceUniqueIdentifier always the same under Wine Product: Wine Version: 5.8 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wmi&wbemprox Assignee: wine-bugs@winehq.org Reporter: jamiesonc2@gmail.com Distribution: Ubuntu
Unity's SystemInfo.deviceUniqueIdentifier always returns the same value under Wine, because the underlying data used to populate the property are hardcoded in Wine. Applications that depend on SystemInfo.deviceUniqueIdentifier being unique between different systems may behave unexpectedly, including identity collisions in cloud services clients.
This behavior was observed in the Syrinscape Online (beta) application, which relies on SystemInfo.deviceUniqueIdentifier to link desktop apps with online accounts. Wine users are getting linked with other Wine users' online accounts because all of the Syrinscape Online clients appear to be running on the same device.
https://www.syrinscape.com/online/
See this Syrinscape support forum thread where the issue was discussed:
https://forum.syrinscape.com/t/who-is-stuart-kehoe/8850
Details about Unity's SystemInfo.deviceUniqueIdentifier:
https://docs.unity3d.com/ScriptReference/SystemInfo-deviceUniqueIdentifier.h...
The following data is retrieved from wbemprox to generate a UID:
Win32_BaseBoard::SerialNumber Win32_BIOS::SerialNumber Win32_Processor::UniqueId Win32_DiskDrive::SerialNumber Win32_OperatingSystem::SerialNumber
As of Wine 5.8, these values are hardcoded. From the latest wbemprox/builtin.c at the time of this writing:
https://source.winehq.org/git/wine.git/blob/93758fc3ef16eed6cf1639aa6c31f6ab...
Line 1103: Baseboard serial number = L"None" Line 1295: BIOS serial number = L"0" Line 2117: DiskDrive serial number = L"WINEHDISK" Line 3216: Processor unique ID = NULL Line 3417: OS serial number = L"12345-OEM-1234567-12345"
As a consequence of the above, the value of Unity's SystemInfo.deviceUniqueIdentifier is always:
12a9126b14ff9b78b28d00f78e2bff20a224611b
PROPOSED:
If it is impractical to obtain actual serial numbers/IDs for the aforementioned components, consider populating the values in a way that facilitates more convenient user customization to workaround application issues.
1. Consider sourcing the values from specially designated registry keys, populated during new WINE_PREFIX setup.
2. Consider populating said registry keys with random values rather than fixed values. This will obviate the need for users to do any manual workarounds. (Not sure if it would break other things, but philosophically, it's not unreasonable to treat every WINE_PREFIX as though it's a whole new system build.)