Windows 10 1903 Mitigation

The 1903 update for Windows 10 introduced a number of problems with OneDrive support. To work around these Opus 12.15 and above disables some functionality when working with OneDrive. As these problems appear to be of a random nature we have added a registry patch flag that you can use to turn this functionality back on if you want to give it a try.

 

We are now up to 1909 and, despite rumours of a fix, the problems remain. Hopefully Microsoft will fix these problems at some point but on their current trajectory of releasing major updates without any real testing it seems unlikely!

 

The registry key is HKEY_CURRENT_USER\Software\GPSoftware\Directory Opus (you can also set this under HKEY_LOCAL_MACHINE to make the change for all users on the system).

 

Add a DWORD value called OneDriveBugMitigation. If its value is set to 0 then all bug mitigation is disabled and OneDrive functionality will be fully restored (although obviously it may not actually work properly). You can also combine the following flag values to selectively enable some aspects of the mitigation:

For example, to enable thumbnails but leave the other problematic functions disabled you would set OneDriveBugMitigation to 6 (2 + 4).

 

Note that you need to restart Opus fully for changes to this value to be noticed.

 

The "kludge" referred to above is a tactic we have employed to try to work around the problem of querying for synchronize status not working. Since the bug appeared, Windows reports the status "Sync pending" for all OneDrive files, irrespective of the actual sync status. With the mitigation enabled, we ignore the sync status reported by Windows and simply look at the attributes in the file system, which at least gives us the two most important sync attributes - "always available" and "available online only". However, if you are keen to get back better sync status reporting (e.g. to know when a file is actually in the process of being synchronized), you can try enabling the "kludge".

 

We have discovered that Windows seems to only report the correct sync status when a program is running from the C:\Windows\System32 folder, which Opus does not do. However there is usually a program running on every system that does run from this folder - Explorer. So, what the "kludge" does is "inject code" into Explorer to query the sync attributes from there. A bit dirty, a bit sneaky, but it seems to work :)

 

However, we have made this optional and disabled by default for two main reasons. Firstly, injecting code into another process is inherently dangerous and, while we're reasonably confident our technique shouldn't cause any problems, we wanted people to be fully informed before they enable it. Secondly, some anti-virus/anti-spyware tools may detect the code injection and complain and/or block access to Opus.

 

With those two caveats in mind, to enable the "kludge", you need to set the OneDriveBugMitigation registry value as described above, and make sure both bit 0 (1) and bit 3 (8) of the value are set. So, for instance, to leave all the mitigations in place AND enable the kludge, you would set the value to 15 (0xf) - which corresponds to all bits being set.

 

Remember, you need to restart Opus fully for changes to this value to be noticed.